DELETE from student WHERE id=6 ;
-- 创建用户
create user wcj identified by '123';
-- 赋予权限
grant all privileges on *.* to wcj;
flush PRIVILEGES;
-- 删除用户
drop user wcj;
-- 修改用户名
rename user xx to wcj;
-- 修改密码
alter user xx identified by '456' -- 版本不支持
set password for xx = '456'
grant all privileges on *.* to wcj identified by '456';
-- 收回权限
revoke all privileges ,grant option from wcj
select @@version
-- 查看权限
show grants for wcj
创建数据库的sql语句
create database xxx(xxx是要创建的数据库的名字,xxx不能是使用已有的数据库名和关键字)
删除数据库的sql语句
drop database xxx(xxx是要删除的数据库的名字,xxx应该是存在的数据库)
数据类型:
整数类型:int(4)表示整数类型最大位数有四位
浮点数类型:float 表示浮点数类型
文本类型:char(10)表示可容纳10个文字的固定文本,如果不足10个文本,会用空格补齐
varchar(10)表示可容纳10个文本的变长文本,不足10个文本,也不会使用空格补齐
时间类型:date 存储的是日期(年-月-日)生日
time 存储的是时间(时:分:秒) 比赛记录
datetime 存储的日期+时间(年-月-日 时:分:秒) 审批时间 注册时间
一、表的操作:
1.创建表
注意:表名不能有关键字和已有的表名
语法
create table 表名(
列1名 列1的数据类型,
列2名 列2的数据类型,
...
列n名 列n的数据类型
);
注:列名在同一个表中不可重复,在不同表中可以重名。
命名规范:常见驼峰式命名
约束:mysql 有4个
含义:对表中录入的数据进行一定的约束,使数据更加准确。
(1)主键约束:关键字:primary key
规则:主键约束的列中的数据,作为某条数据的代表,其具有唯一代表性,且不能为空。一张表中只能允许最多有一个主键约束。
规范:主键约束的列中的数据应该是无现实意义的。
有意义的数据作为主键,可能存在修改风险(比如一代身份证更换为二代 15位->18位),系统中很多关联数据都要更新
使用无意义的数据作为主键,没有这样的风险。
联合主键:一张表同时有多个列作为主键出现,被称为联合主键,两个列的值的组合作为主键出现。
以下哪些说法是正确的?
A.一张表最多只能有一个主键 OK
B.一张表中最多只能有一个列是主键 NG
C.一张表中可以有多个主键 NG
D.一张表中可以有多个列是主键 OK
总结起来:主键最多有一个,但可以是多个列。
创建主键:
(a)直接在建表时,在对应的主键列上通过primary key声明主键
create table student(
stuid int(8) primary key,
sname varchar(32),
birthday date
);
(b)在建表语句的结尾处指定主键列(可以指定联合主键,指定了stuid和sname为联合主键)
create table student(
stuid int(8),
sname varchar(32),
birthday date,
primary key(stuid, sname)
);
(c)在建表语句的结尾处以命名的方式指定主键列(可以指定联合主键,为约束本身起名字,管理和维护约束本身)
create table student(
stuid int(8),
sname varchar(32),
birthday date,
constraint pk_student primary key(stuid)
);
建表后追加主键
alter table student add primary key(stuid);
建表后移除主键
alter table student drop primary key;
(2)外键约束 关键字:Foreign key
出现在两张表中,一个表中的某个列的数据引用了另一张表的主键或者唯一约束。
外键能够填写的数据:另一个表中的主键的数据和空值
create table student(
stuid int(8) primary key,
sname varchar(32),
birthday date,
majorid int(8),
foreign key(majorid) references majors(majorid)
);
student表中majorid列的数据依赖于majors表中majorid列,必须其中有的数据
alter table student add foreign key(majorid) references majors(majorid)
(3)唯一约束 unique
约束数据在表中是唯一的,不可重复
与主键比较
a.一张表中最多只能有一个主键,可以有任意多个唯一约束
b.唯一约束修饰列中允许出现空值
笔试题: 主键约束与唯一约束的区别?
create table student(
sno int(8) primary key,
sname varchar(32) unique,
);
create table student(
sno int(8),
sname varchar(32),
primary key(sno),
unique(sname)
);
(4)非空约束
非空约束约束的列不允许出现空值,必须给出数据
create table student(
sno INT(8) primary key,
sname VARCHAR(32) unique not null
);
Oracle中5个
主键约束
外键约束
唯一约束
非空约束
(5)检查约束(自定义约束)check(xxx>0)
check(xxx between 0 and 2000)
and - &&
or - ||
not - !
自增:一张表中允许至多一个列进行自增,数据从1开始,每次自增1
2.删除表
语法:DROP TABLE 数据库名.表名; 选中数据库时:DROP TABLE 表名;
删除表:将整张表都删除掉,不保留表(结构)本身。
3.截断表
语法:TRUNCATE TABLE 数据库名.表名; 选中数据库时:TRUNCATE TABLE 表名;
截断表:删除表中的数据,保留表(结构)本身。
笔试/面试:delete,drop和truncate的区别? 删除表和截断表的区别?
4.重命名表
ALTER TABLE 旧表名 RENAME 新表名
5.改变表
(1)新增一个列
ALTER TABLE 表名 add column 新列名 数据类型;
ALTER TABLE majors ADD COLUMN snum INT(4);
(2)修改列名/修改列的数据类型
ALTER TABLE 表名 CHANGE 旧列名 新列名 新数据类型;
旧列中已有数据情况下,可能无法修改类型
(3)删除一个列
ALTER TABLE 表名 DROP COLUMN 列名