我的学习之路_第十八章_SQL语句
SQL语句
启动数据库: net start mysql 关闭数据库: net stop mysql
登录数据库 : cmd-->命令行-->mysql-->mysql -u账号 -p密码
【创建和删除数据库】
使用关键字 : create(创建) database(数据库)
格式: create database 数据库名;
create database 数据库名 character set 字符集;
●--查看mysql中所有的数据库
show database;
●--查看某个数据库的定义的信息
show create database 数据库名;
●--切换数据库
use 数据库名;
●--查看正在使用的数据库
select database();
●--删除数据库
drop database 数据库名;
【创建表的SQL语句】
创建数据库表,使用关键字 create(创建) table(表)
[] : 数据库中是可选的意思,可以有,可以没有
格式:
create table 表名(
字段名 数据类型[长度] [约束],
字段名 数据类型[长度] [约束],
...
字段名 数据类型[长度] [约束](最后一个不能有逗号)
);
主键约束: primary key 字段不能为null,不能重复
●--查看当前数据库中所有的表
show table;
●--查看表结构
desc 表名 ;
●--删除表
drop table 表名 ;
【修改表结构格式】
关键字 : alter(修改) modify(更改) change(改变)
●--修改表添加列
alter table 表名 add 列名 类型[长度] [约束];
●--修改表修改列的类型长度及约束
alter table 表名 modify 列名 类型[长度] [约束];
注意:如果有数据,必须注意数据类型 varchar --> int 容易有错误数据
●--修改列名以及数据类型和约束
alter table 表名 change 原列名 新列名 类型[长度] [约束];
●--删除列
alter table 表名 drop 列名;
注意:如果列中有数据,数据就会一起删除了,需谨慎
●--修改表名
rename table 表名 to 新表名;
●--修改表的字符集
alter table 表名 character set 字符集;
注意:不建议执行,有可能会产生乱码
【插入表数据】
使用关键字 : insert(插入) [into]
格式:
包含主键:insert into 表名(字段1,字段2...) values(值1,值2...);
主键自增,省略主键: insert into 表名(不包含主键) values (不包含主键);
注意事项:
1.字段和值一定要一一对应(个数,数据类型)
2.除了数值类型(int ,double)其他的数据类型都需要使用引号包裹起来
可以使用双引号,也可以使用单引号,推荐使用单引号
●--包含主键
insert into 表名(字段1,字段2...) value(值1,值2...);
●--创建表,主键自增 auto_increment(主键自己添加,自己增长)
create table 表名(
字段 数据类型[长度] primary key auto_increment,
字段 数据类型[长度][约束],
...
);
●--主键自增,省略主键:
insert into 表名(不包含主键) values (不包含主键);
●--批量插入数据
格式:
包含主键: insert into 表名(字段1,字段2...) values (值1,值2...)
主键自增,省略主键: insert into 表名 (不包含主键) values (不包含主键),(值1,值2...)
●--省略字段名格式:必须给出全部字段的值(包含主键)
格式:
insert into 表名 values(全部字段的值);
insert into 表名 values(全部字段的值),(全部字段的值)...
●--记不住主键,可以使用null,sql会自动计算主键
insert into 表名 values(null,字段);
【更新表数据】
使用关键字: update(更新) set(设置)
格式:
不带条件过滤,一次修改列中所有的数据(慎用)
update 表名 set 字段名=字段值,字段名=字段值...
带条件过滤,使用关键字 where
update 表名 set 字段名=字段值.字段名=字段值...where 过滤的条件
【删除表数据】
使用关键字 : delete(删除) from(来自)
格式:
delete from 表名 [where 过滤条件]
delete from 表名 : 删除标作用的所有数据,但是不会删除主键自增
truncate table 表名 : 删除表中的所有数据,会删除主键自增,让主键自增重置,从1开始
【主键约束】
使用关键字 : primary 可以
作用:
约束主键列不能为null
不能重复
每一个表必须有一个主键,且只能有一个主键
主键不能使用业务数据
●--添加主键的第一种方式,在列名之后直接添加(创建表的时候直接添加)
●--添加主键的第二种方式,使用constraint区域
[constraint 名称] primary key (字段列表);
如果不给出主键的名字,可以省略关键字 constraint
●--添加主键的第三种方式,创建表之后,通过修改表结构,添加主键
alter table 表名 add [constraint 名称] primary key (字段列表);
●--删除主键
alter table 表名 drop primary key ;
●--联合主键 : 使用2个以上的字段为主键
create table 表名(
字段 数据类型[长度],
字段 数据类型[长度],
...
primary key(字段, 字段)
);
【非空约束】
使用关键字 : not null
作用:强制约束某一列不能为null(不接受null值)
●--创建非空约束第一种格式,创建表时,在字段后面直接给出
字段 数据类型[长度] not null ;
●--创建非空约束第二种格式,修改表结构
alter table 表名 modify 列名 数据类型[长度] [约束];
●--删除非空约束
alter table 表名 modify 列名 数据类型[长度];
【唯一约束】
使用关键子: unique
作用:添加了唯一约束的字段,不能重复
●--创建唯一约束的第一种格式,创建表时,在字段后直接给出
字段 数据类型[长度] unique ;
●--创建唯一约束的第二种格式,创建表时使用 [constraint 名称] unique (字段列表)
create table 表名(
字段1 数据类型[长度],
字段2 数据类型[长度],
...
constraint unique(字段2)
);
●--创建唯一约束的第三种格式,创建表之后,修改表数据
alter table 表名 modify 列名 类型[长度] unique ;
●--删除唯一约束
alter table 表名 drop index 名称
定义约束的时候,如果没有创建名称,则名称为字符串(字段),如果创建了名称,就写创建时的名称
【默认约束】
给字段添加一个默认值,如果字段没有插入值,则使用默认值
使用关键字: default 值
●--创建默认约束方式一,创建表,列数据类型后面 default '默认值'
●--创建默认约束方式二,修改表结构
alter table 表名 modify 列名 数据类型[长度] default '默认值' ;
●--删除默认约束
alter table 表名 modify 列名 数据类型[长度] ;