(Sql语句)
1.操作库
创建库CREATEDATABASE[IFNOTEXISTS]数据库名[参数[参数][参数]...];
显示库
SHOWDATABASES;
显示数据库创建语句
SHOWCREATEDATABASE数据库名;
修改库
ALTERDATABASE数据库名[参数[参数][参数]...];
注意:不能改数据库的名字
删除库
DROPDATABASE[IFEXISTS]数据库名;
2、操作表
操作表之前使用需要先确定使用哪个数据库
USE数据库名
创建表
CREATETABLE表名(列名类型[,列名类型][,列名类型]...);
查看所有表
SHOWTABLES;
查看表的创建语句
SHOWCREATETABLE表名;
显示表结构
DESC表名;
修改表名
RENAMETABLE原表名TO新表名;
修改字符集
ALTERTABLE表名CHARACTERSET字符集名;
删除表
DROPTABLE表名;
操作列
追加列
ALTERTABLE表名ADD列名类型[,列名类型][,列名类型]...;
修改列类型
ALTERTABLE表名MODIFY列名类型[,列名类型][,列名类型]...;
修改列
ALTERTABLE表名CHANGECOLUMN原列名新列名类型;
删除列
ALTERTABLE表名DROP列名;
操作数据(增删改)
插入
语法:
INSERTINTO表名[(列名[,列名]...)]VALUES(值[,值]...);
注意事项:
插入值类型必须与对应列的数据类型一致
数据不能超出长度
插入值得为之必须与列名顺序一致
字符和日期数据要放在单引号中
插入空值使用null
如果不指定插入哪一列,就是插入所有列
中文数据
由于默认码表是utf8,而cmd.exe的码表是gbk,在插入中文数据的时候会报错,所以我们需要修改客户端码表
先查看系统变量:SHOWVARIABLESLIKE'character%';
修改客户端码表:SETcharacter_set_client=gbk;
这样就解决了中文插入的问题,但在查询数据的时候仍然显示为乱码,这是因为mysql向cmd传输数据的时候使用的是utf8
修改输出数据的码表:SETcharacter_set_results=gbk
修改
语法
UPDATE表名SET列名=值[,列名=值]...[WHERE条件语句];
DISTINCT
语法
SELECT[DISTINCT]列名[,列名]...FROM表名
注意事项
*可以替代列名,表示所有列,但是通常我们为了提高代码的可读性,不使用*
DISTINCT为过滤重复记录
如果DISTINCT后面跟多列,是过滤掉多列合并之后的重复
表的约束
唯一约束unique
unique约束的字段在整张表中唯一,不可重复,不包括多个NULL
创建表时设置唯一
createtabletest(
idint,
namevarchar(20)unique
);
删除唯一约束
showcreatetabletest;发现唯一索引名叫name
altertabletestdropindexname;
添加唯一约束
altertabletestchangenamenamevarchar(20)unique;
非空约束notnull
notnull约束的字段不能为空
创建表时设置非空
createtabletest1(
idint,
namevarchar(20)notnull
);
删除非空约束
altertabletest1changenamenamevarchar(20);
添加非空约束
altertabletest1changenamenamevarchar(20)notnull;
主键约束primarykey
通常我们在设计表的时候需要给每一条记录一个独有的标识,我们就用主键来约束这个标识.
primarykey用来标识一个字段,这个字段是非空且唯一的.
创建表时设置主键
createtabletest2(
idintprimarykey,
namevarchar(20)
);
删除主键
altertabletest2dropprimarykey;
在制定列上添加主键
altertabletest2changeididintprimarykey;
altertabletest2addprimarykey(id);
设置主键自动增长
createtabletest3(
idintprimarykeyauto_increment,
namevarchar(20)
);
删除自增长
altertabletest3changeididint;
设置自增长
altertabletest3changeididintauto_increment;
UUID主键
128位的2进制,32位16进制加上4个-
java.util.UUID.randomUUID().toString()
3c2372a4-da2a-4470-b17a-f2e50ac79636
外键约束foreignkey
foreignkey约束某一列的值是参照另外一列
创建表时添加外键约束
createtablehusband(
idintprimarykey,
namevarchar(20)notnull
);
createtablewife(
idintprimarykey,
namevarchar(20)notnull,
husband_idint,
constrainthusband_id_fkforeignkey(husband_id)referenceshusband(id)
);
wife表的husband_id的值必须是husband表中的id
被外键引用的记录不能删除,如果想要删除某条被引用的记录,需要找到引用这条记录的记录,解除关联
被外键引用的表不能删除,如果想要删除被引用的表,需要删除所有引用此表的外键
删除外键约束
altertablewifedropforeignkeyhusband_id_fk;
添加外键约束
altertablewifeaddconstrainthusband_id_fkforeignkey(husband_id)referenceshusband(id)