自增长与主键
自增长命令:AUTO_INCREMENT
能够自增长的一定是主键,但主键并不一定都是自增长。
当插入NULL值和default值时,都会在原有的数值基础上自增长1。
重新设定自增长的初始值:
ALTER TABLE TB_NAME AUTO_INCREMNT = 所需要的值 ;
非空约束
非空约束命令:NOT NULL
如果插入NULL则报错
默认值
用default来赋初值 在不传入新值时,则使用默认值。
赋值命令
default(数字/字符/字符串) ;
唯一性约束
unique [ key ]只能省略key,而[primary] key只能省略primary
使用时顺序:
字段名称 字段类型 [unsigned | zerofill ] [ not null ] [ default 默认值] [ [PRIMARY] KEY | UNIQUE[ KEY]] [ AUTO_INCREMENT]
数据表的重命名
以user10 变 user11为例:
ALTER TABLE user10 RENAME T0 user11 :
ALTER TABLE user10 RENAME AS user11 :
ALTER TABLE user10 RENAME user11 :
RENAME TABLE user10 TO user11;
重命名命令:
ALTER TABLE TB_NAME RENAME T0 / AS NEW TB_NAME :
ALTER TABLE TB_NAME RENAME NEW TB_NAME :
RENAME TABLE TB_NAME TO NEW TB_NAME :
添加和删除字段
添加字段:
ALTER TABLE user10 ADD card CHAR(18);
ALTER TABLE user10 ADD test varchar not null unique;
ALTER TABLE user10 ADD test varchar not null first ; 指定位置
ALter TABLE user10 ADD test3 INT NOT NULL DEFAULT 100 AFTER username ;
选中一个表,完成多次操作
ALTER TABLE user10
ADD test int not fill default 123 alter passwaord,
add test5 float(6,2) first,
add test6 set('A','B','C');
删除字段:
ALTER table TB_name drop 字段名
选中一个表删除多个字段:
ALTER TABLE user10
DROP test1
DROP tset2
DROP test3
修改字段
MODIFY:
修改类型:
ALTER TABLE user10 MODIFY email VARCHAR(200);
ALTER TABLE user10 MODIFY email VARCHAR(50) NOT NULL DEFAULT '383234';
将card字段移动到test之后
ALTER TABLE user10 MODIFY card CAHR(18) AFTER test;
ALTER TABLE user10 MODIFY test CHAR (32) FIRST;
将test改为test1
ALTER TABLE user10 MODIFY change test test1 CHAR (32) ;
也可改变字段类型:
ALTER TABLE user10 CHANGE test test INT;
添加和删除默认值
添加默认值:
ALTER TABLE tble_name 字段名称 SET DEFAULT 默认值
删除默认值:
ALTER TABLE tble_name 字段名称 DROP DEFAULT 默认值
增加和删除主键
增加主键:
ALTER TABLE tbl_name ADD [ CONSTRAINT [symbol]] PRIMARY KEY[index_type](字段名称...)
[]表示可省略
ALTER TABLE test12 ADD PRIMARY KEY(id,card)
删除主键:
ALTER TABLE tbl_name DROP PRIMARY KEY;
无需添加主键名称
主键有自增长时,应该先去掉自增长再删除
使用MODIFY:
ALTER TABLE test14 MODIFY id INT UNSIGNED;
添加删除唯一性约束
添加唯一:
ALTER TABLE tbl_name ADD UNIQUE[索引名称] (字段名称)
索引可以是复合索引
删除唯一索引:
ALTER TABLE tbl_name DROP INDEX 字段名称;
ALTER TABLE tbl_name DROP KEY 索引名称;
换引擎:
ALTER TABLE user12 ENGINE= 引擎名称;
删除数据表
一次删除一张表:
DROP TABLE TB_name ;
一次删除多张表;
DROP TABLE IF EXISTS user11,user10,user9;
在登录时打开指定的数据库:
mysql-uroot-p-D maizi(数据表名)
插入记录
指定字段赋值:
INSERT tb_name (字段名称) VALUES | VALUE (值) 字段与值是一一对应的关系
同时插入多条记录:
INSERT tb_name VALUES (值),(值)....
INSERT user VALUES(6,'D','DDD','dddd'),(7,'SSS','SSSS')
通过SET的形式插入记录中:
INSERT [INTO] user SET id=98,username='test' , password='114514' ;
将查询结果插入表中:
INSERT 新建表名 SELECT 字段名 FROM 查询的表名
INSERT 插入表名(字段名) SELECT 字段名 FROM 查询表名;
要字段数和数据类型匹配
更新和删除记录
更新记录:
UPDATE user SET age = 5 ;
UPDATE 数据库名 SET 表名 = 值 ;
UPDATE 数据库名 SET 表名 = 值 ;
WHERE (条件) (ORDER BY 字段名称)(LIMIT限制条数)
例如 id=3 id.>=6
删除表中的记录:
DELETE FROM 表名 ;
DELETE FROM 表名 where(条件) [ORDER BY 字段名称][LIMIT 限制条数];
不重置自增长需要手动额外重置:
ALTER TABLE user AUTO_INCRMENT = 值 ;
彻底清空数据表:
TRUNCATE [TABLE] TBL_NAME ;
会重置自增长
查询表达式
查询表达式:
SELECT * FROM 表名 ;
查询某一表达式:
SELECT 字段名 FROM 表名
表来自于哪个数据库下
db_name.tbl_name
SELECT 字段名称 FROM db_name.tbl_name;
字段来于哪张表:
SELECT cms_admin.id,cms_admin.username FROM csm.csm_admin ;
表起别名:
SELECT * FROM 表名 [AS] 别名;
字段起别名
SELECT id AS ‘编号',username AS '用户名' ....
待条件的查询
WHERE 条件:
检测某一编号为1的用户:
SELECT 字段名 FROM 表名 WHERE 某一字段名=1 ;
或者是><>=<= !=
检测某一值是否为NULL:
SELECT*FROM 表名 WHERE 该值是否为NULL ;
SELECT*FROM 表名 WHERE age<=>NULL ;检测值是否为NULL
添加字段:
ALTER TABLE 表名 ADD 字段名 数据类型 ;
检测是否为空值:
SELECT * FROM 表名 WHERE 字段名 IS NULL ;
检测是否为非空值:
SELECT * FROM 表名 WHERE 字段名 IS NOT NULL ;
范围条件查询
指定范围:
SELECT * FROM 表名 WHERE 字段名 BETWEEN AND ;
SELECT * FROM 表名 WHERE 字段名 NOT BETWEEN AND ;
指定集合(字符串和数字都可以):
SELECT * FROM 表名 WHERE 字段名 IN (集合元素); 包含
SELECT * FROM 表名 WHERE 字段名 NOT IN (集合元素); 不包含
模糊查询
模糊查询:
%:代表0个1个或者多个任意字符
_:代表1个任意字符
SELECT * FROM 表名 WHERE 字段名 LIKE '字符%' ;
SELECT * FROM 表名 WHERE 字段名 LIKE '%' ;相当于没有设置条件
查询用户名为3位的用户(使用下划线,一个代表一个字符):
SELECT * FROM 表名 WHERE 字段名 LIKE '____' ;
_i% 开头是一位字符且包含i的记录
分组查询
分组查询:
GROUP BY 关键字
字段名称:
SELECT * FROM GROUP BY 字段名 ;(可以是多字段)
按照字段的位置:
SELECT * FROM GROUP BY 字段位置;
分组查询配合聚合函数
聚合函数:
COUNT():
用于统计表中的所有记录 SELECT COUNT(* | 字段名) FROM 表名
COUNT(字段)不统计NULL值
MAX()
MIN()
AVG()
SUM()
GROUP_CONCAT 用于查看详情:
GROUP_CONCAT(字段名)
WITH ROLLUP:
用于GROUP BY 之后,查看统计的总结果,结果与使用的聚合函数有关。
HAVING语句:
用于二次过滤筛选 必须配合分组使用。
通常在GRUOP BY 之后 通常为 HAVNING 条件 [AND ] 条件