今日分享开始啦,请大家多多指教~
这篇文章给大家分享的是MySQL的基本操作和一部分的CRUD内容,正文开始~
数据库操作
创建数据库
1.相关参数
CHARACTER SET:指定数据库采用的字符集,如果不指定字符集,默认utf8
COLLATE :指定数据库字符集的校对规则
-
utf8_bin:区分大小写
-
utf8_general_ci:不区分大小写
-
默认使用utf8mb4_general_ci
2.创建数据库sql
CREATE DATABASE db CHARACTER SET utf8 COLLATE utf8_general_ci
查看、删除数据库
1.查看所有数据库
SHOW DATABASES
2.查看数据库创建语句
SHOW CREATE DATABASE db
3.数据库删除语句
DROP DATABASE db
备份恢复数据库
1.备份数据库
-
需要在DOS执行
-
mysqldump -u 用户名 -p -B 数据库1 数据库2 数据库n > d:\文件名.sql
-
将db数据库备份到D盘下的bak.sql文件
mysqldump -u root -p -B db db01 db02 > d:\\bak.sql
2.恢复数据库
-
需要在MySQL命令行执行
-
source d:\文件名.sql
-
将D盘下的bak.sql文件恢复到数据库
source d:\\bak.sql
3.备份数据库中的指定表
- mysqldump -u 用户名-p 密码 数据库 表1 表2 表n > d:\文件名.sql
mysqldump -u root -proot db user > d:\\bak.sql
数据表操作
创建表
1.相关参数
-
CHARACTER SET:字符集,如果不指定则为所在数据库字符集
-
COLLATE:校对规则,如不指定则为所在数据库校对规则
-
ENGINE:存储引擎
2.sql语句
添加表
-
ALTER TABLE修改指定表
-
ADD添加新字段
-
AFTER在哪列之后添加
ALTER TABLE
user ADD sex int AFTER name
修改表
- MODIFY修改指定字段
ALTER TABLE
user MODIFY pwd VARCHAR(255)
-
RENAME TABLE 修改指定表
-
to 新表名
RENAME TABLE stu to student
- 修改字符集
ALTER TABLE
user CHARACTER SET utf8
- 修改存在列名成新列名
ALTER TABLE
userCHANGE
name username VARCHAR(50)
删除表
- DROP删除指定字段
ALTER TABLE
user DROP sex
- 删除表
DROP TABLE
user``
数据库常用字段类型
数据类型分类
UNSIGNED
UNSIGNED表示无符号,没有指定表示默认有符号
DECIMAL[M,D]
-
如果希望小数精度高,推荐使用decimal
-
可以支持更加精确的小数位,M是小数位数(精度)的总数,D是小数点(标度)后面的位数
-
如果D是0,则表示没有小数点或分数部分
-
M最大是65,D最大是30
-
如果D被省略,默认是0。如果M被省略,默认是10
CHAR(size)
-
固定长度字符串 最大255字符
-
不区分字符是汉字还是字母,都不能超过size个
-
如果插入的数据长度没有达到size,也会分配size长度的字符空间
-
查询速度 char>varchar
VARCHAR(size)
-
0~65535 可变长度字符串 最大65532字节(utf8编码最大21844字符 1-3个字节用于记录大小)
-
VARCHAR(size)的size代表的是字符不是字节
-
如果插入的数据长度没有达到size,实际占用空间大小按插入的数据长度来分配
-
varchar本身还需要占用1-3个字节来记录存放内容长度
-
查询速度 char>varchar
-
存放文本时,可以使用text代替varchar,如果varchar不够用 可以考虑使用mediumtext或者longtext
时间类型
-
Date 保存年月日
-
DATEIME 保存年月日时分秒
-
TIMESTAMP会使用时间戳自动更新保存的年月日时分秒
CRUD
Insert
-
插入的数据应与字段的数据类型相同。比如把’abc’添加到int 类型会错误
-
数据的长度应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。
-
在values中列出的数据位置必须与被加入的列的排列位置相对应。
-
字符和日期型数据应包含在单引号中。
-
列可以插入空值[前提是该字段允许为空],insert into table value(null)
-
insert into tab name(列名…)values (),(),()形式添加多条记录
-
如果是给表中的所有字段添加数据,可以不写前面的字段名称
-
默认值的使用,当不给某个字段值时,如果有默认值就会添加,否则报错
INSERT INTO good ( id, goods_name, price )VALUES(2,'苹果',3000)
Update
-
UPDATE语法可以用新值更新原有表行中的各列
-
SET子句指示要修改哪些列和要给予哪些值。
-
WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行。
-
如果需要修改多个字段,可以通过set字段1=值1,字段2=值2…
1.修改表中所有数据
UPDATE good SET price=1000
2.修改指定数据
UPDATE good SET price=1000 where id=1
3.修改数据在原有基础上增加/减少
UPDATE good SET price=price+1000
Delete
-
如果不使用where子句,将删除表中所有数据。
-
Delete语句不能删除某一列的值(可使用update设为null或者"’)
-
使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table 表名;
1.删除所有数据
DELETE FROM good
2.删除指定数据
DELETE FROM good WHERE id=1
单表查询
1.基本查询
-
Select 指定查询哪些列的数据。column指定列名。
-
*号代表查询所有列
-
From指定查询哪张表。
-
DISTINCT可选,指显示结果时,是否去掉重复数据
SELECT DISTINCT
name FROM student
2.as取别名和使用表达式进行运算
SELECT name, (num1+num2+num3) as total FROM student
3.查询条件
-
比较运算符> < >= <= <> != ==
-
BETWEEN AND:显示在某一区间的值
-
IN:显示在in列表中的值,如in(10,20,30)
-
LIKE 或者 NOT LIKE:模糊查询
-
IS NULL:判断是否为空
-
and:多个条件同时成立
-
or:多个条件任一成立
-
not:不成立,如where not(salary>100)
select * from student where (num1+num2+num3)>200 and num1<num2 and num3 like "笑%"
4.排序条件
-
Order by 指定排序的列,排序的列既可以是表中的列名,也可以是select语句后指定的列名。
-
Asc升序[默认]、Desc降序
-
ORDER BY子句应位于SELECT语句的结尾。
select (num1+num2+num3) as total from student order by total desc
多表查询
今日份分享已结束,请大家多多包涵和指点!