Sql语句

(Sql语句

1. 操作库

创建库 CREATE DATABASE [IF NOT EXISTS] 数据库名 [参数参数] [ 参数]...];

显示库

SHOW DATABASES;

显示数据库创建语句

SHOW CREATE DATABASE 数据库名;

修改库

ALTER DATABASE 数据库名参数参数][ 参数]...];

注意不能改数据库的名字

删除库

DROP DATABASE [IF EXISTS] 数据库名;

2、操作表

操作表之前使用需要先确定使用哪个数据库

USE 数据库名

创建表

CREATE TABLE 表名(列名 类型[,列名 类型][,列名 类型]...);

查看所有表

SHOW TABLES;

查看表的创建语句

SHOW CREATE TABLE 表名;

显示表结构

DESC 表名;

修改表名

RENAME TABLE 原表名 TO 新表名;

修改字符集

ALTER TABLE 表名 CHARACTER SET 字符集名;

删除表

DROP TABLE 表名;

操作列

追加列

ALTER TABLE 表名 ADD 列名 类型[,列名 类型][,列名 类型]...;

修改列类型

ALTER TABLE 表名 MODIFY 列名 类型[,列名 类型][,列名 类型]...;

修改列

ALTER TABLE 表名 CHANGE COLUMN 原列名 新列名 类型;

删除列

ALTER TABLE 表名 DROP 列名;
操作数据(增删改)

插入

语法:

INSERT INTO 表名[(列名[,列名]...)] VALUES([,]...);

注意事项:

插入值类型必须与对应列的数据类型一致

数据不能超出长度

插入值得为之必须与列名顺序一致

字符和日期数据要放在单引号中

插入空值使用null

如果不指定插入哪一列就是插入所有列

中文数据

由于默认码表是utf8, cmd.exe的码表是gbk, 在插入中文数据的时候会报错所以我们需要修改客户端码表

先查看系统变量: SHOW VARIABLES LIKE 'character%';

修改客户端码表: SET character_set_client=gbk;

这样就解决了中文插入的问题但在查询数据的时候仍然显示为乱码这是因为mysqlcmd传输数据的时候使用的是utf8

修改输出数据的码表: SET character_set_results=gbk

修改

语法

UPDATE 表名 SET 列名=[,列名=]...[WHERE 条件语句];

DISTINCT 

语法

SELECT [DISTINCT] 列名[, 列名]... FROM 表名

注意事项

*可以替代列名表示所有列但是通常我们为了提高代码的可读性不使用*

DISTINCT为过滤重复记录

如果DISTINCT后面跟多列是过滤掉多列合并之后的重复

表的约束

唯一约束 unique

unique约束的字段在整张表中唯一不可重复不包括多个NULL

创建表时设置唯一

create table test (

id int,

name varchar(20) unique

);

删除唯一约束

show create table test; 发现唯一索引名叫name

alter table test drop index name;

添加唯一约束

alter table test change name name varchar(20) unique;

非空约束 not null

not null约束的字段不能为空

创建表时设置非空

create table test1 (

id int,

name varchar(20) not null

);

删除非空约束

alter table test1 change name name varchar(20);

添加非空约束

alter table test1 change name name varchar(20) not null;

主键约束 primary key

通常我们在设计表的时候需要给每一条记录一个独有的标识我们就用主键来约束这个标识.

primary key用来标识一个字段这个字段是非空且唯一的

创建表时设置主键

create table test2(

id int primary key,

name varchar(20)

);

删除主键

alter table test2 drop primary key;

在制定列上添加主键

alter table test2 change id id int primary key;

alter table test2 add primary key(id);

设置主键自动增长

create table test3(

id int primary key auto_increment,

name varchar(20)

);

删除自增长

alter table test3 change id id int;

设置自增长

alter table test3 change id id int auto_increment;

UUID主键

128位的2进制, 3216进制加上4-

java.util.UUID.randomUUID().toString()

3c2372a4-da2a-4470-b17a-f2e50ac79636

外键约束 foreign key

foreign key约束某一列的值是参照另外一列

创建表时添加外键约束

create table husband(

id int primary key,

name varchar(20) not null

);

create table wife(

id int primary key,

name varchar(20) not null,

husband_id int,

constraint husband_id_fk foreign key(husband_id) references husband(id)

);

wife表的husband_id的值必须是husband表中的id

被外键引用的记录不能删除如果想要删除某条被引用的记录需要找到引用这条记录的记录解除关联

被外键引用的表不能删除如果想要删除被引用的表需要删除所有引用此表的外键

删除外键约束

alter table wife drop foreign key husband_id_fk;

添加外键约束

alter table wife add constraint husband_id_fk foreign key(husband_id) references husband(id)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值