数据库操作命令
命令行界面命令(要加;
)
1 2 3 4 5 6 7 8 - mysql -u 名字 -p 密码 #在命令行登录mysql - select user(); #查询当前用户 - select database() #查询当前使用的数据库 - show databases ; #显示所有数据库 - use database_name; #更改当前数据库 - show tables; #显示数据库的表 - describe 表名; #显示表数据 - mysqldump -u 用户名 –p 数据库名 > 导出的文件名; #导出数据库文件
常用SQL命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 SELECT - 从数据库中提取数据 UPDATE - 更新数据库中的数据 DELETE - 删除数据 INSERT INTO - 向数据库中插入新数据 CREATE - 创建 ALTER DROP - 删除 where and or distinct order by like in between as union view
通配符
通配符
描述
%
替代 0 个或多个字符
_
替代一个字符
[charlist ]
字符列中的任何单一字符
[^charlist ] 或 [!charlist ]
不在字符列中的任何单一字符
库的基本操作 1 2 3 create database <数据库名> #创建数据库 drop database <数据库名> #删除数据库 use <数据库名> #进入相应数据库(也可以在图形界面直接点击)
视图操作 1 2 3 4 CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition
表的基本操作
设有表stu
包括name
和age
两个字段,类型是varchar(30)
和smallint
1 2 3 4 5 6 7 8 9 10 11 12 13 14 create table stu(name varchar(30),age smallint) #创建数据库表 #可以在数据类型后面加 default <value> 设置默认值 #也可以在数据类型后面设置是否为主键等 desc stu #查看指定表的结构(字段和对应类型) insert into stu(name,age) values('a',1) #向表内插入一条数据‘a’和1 #stu()的字段内容可不填,但这样values()内值的数量与类型要与表的字段一一对应 select name,age from stu #查找表内对应字段的内容 # select * from table 查询表的全部字段内容 drop table <表名> #删除表 set <字段名> utf8 #设置字段名的字符集
将查询数据放入另一个表 1、假如A表存在
则 insert into A(a,b,c) (select a,b,c from B)
2、假如A表不存在
select a,b,c into A from B (mysql好像不行)
3、假如需要跨数据库
insert into ADB.[dbo].A(a,b,c) (select a,b,c from BDB.[dbo].B)
alert ALTER TABLE 语句用于在已有的表中添加、修改或删除列。
如需在表中添加列,请使用下列语法:
1 2 ALTER TABLE table_name ADD column_name datatype
要删除表中的列,请使用下列语法:
1 2 ALTER TABLE table_name DROP COLUMN column_name
现在我们希望改变 “Persons” 表中 “Birthday” 列的数据类型。
我们使用下列 SQL 语句:
mysql语句
1.修改某个表的字段类型及指定为空或非空 1 2 >alter table 表名称 change 字段名称 字段名称 字段类型 [是否允许非空]; >alter table 表名称 modify 字段名称 字段类型 [是否允许非空];
2.修改某个表的字段名称及指定为空或非空 1 >alter table 表名称 change 字段原名称 字段新名称 字段类型 [是否允许非空];
3.删除
1 alter table test drop column name; --删除表列
4.加唯一性约束
1 2 3 4 alter table 表名 add unique(字段名); #给约束取名字 alter table 表名 add unique key `uniquebno` ( 字段名);
其他语句**
1 2 ALTER TABLE 表名称ALTER COLUMN 字段名称 字段类型
多库联合查询 1 select 列名,列名 from 库名,库名 where (库名.列名)
嵌套查询 1 2 select 列名 from 库名 where ?=(select distinct 列名 from 库名)
自身连接查询 1 2 3 4 #自身连接查询可转换为嵌套查询 select 列名 from 库名 A , 库名 B where A.列名 = B.列名 #库名相同,后 A,B相当于别名
表连接 1 2 3 4 #左连接where只影向右表,右连接where只影响左表 left/right/inner (out) join # inner join:理解为“有效连接”,两张表中都有的数据才会显示
查询结果不重复 1 select distinct 列名 from 库名
查询结果命名 1 select 列名 as 新列名 from 库名
查询条件 1 select 列名 from 库名 where 条件
集合查询 1 2 3 4 5 6 7 8 9 10 11 12 #并集union、交集intersect、差集except select 列名 from 库名 union select 列名 from 库名 select 列名 from 库名 intersect select 列名 from 库名 select 列名 from 库名 except select 列名 from 库名
查询结果操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 # 排序 order by 默认采用升序(asc),排序,可以手动设置为降序(desc) select 列名 from 库名 order by ? desc,? # 一个或多个列对结果集进行分组。是先排序后分组 group by #having语句通常与GROUP BY语句联合使用,用来过滤由GROUP BY语句返回的记录集 having #having与where区别:where过滤行,having过滤组 #计数 count select count(?) from 库 ## 平均值 avg select avg(?) from 库 # 最大值 max select avg(?) from 库 # 最小值 min select avg(?) from 库 # 和 sum select sum(?) from 库
where 条件查询可跟 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 > < between ? and ? in(?,?,?) some #表示满足一个条件即可。就像英语一样,some一半适用于 = 的情况 any #这里的any和some一样表示满足一个条件,只是any常用于非“=”的情况 all #货真价实的所以,要满足子查询中所有的情况 like 通配符 not like 通配符 or and is
创建用户,设置权限 to Public 表示所有用户
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 create login <登录名> with password ='密码',default_database=<数据库名> #创建登录使用的一个用户,类似 root create user <用户名> for login <登录名> with default_schema=<表名> #为登录时的用户创建某个表的用户 grant <权限> on <表名> to <用户名> (with grant option 加上后给了用户授权的权限) #给某个用户某个表的权限 revoke <权限> on <表名> from <用户名> flush privileges; #刷新系统权限表 show grants for <用户名> #查看用户权限
权限 1 2 3 4 5 6 7 8 9 10 11 12 select #查询 insert #添加 update #更改 delete #删除 create #创建 alter #修改 drop #删除 index #索引 create view #创建视图 show view #查看视图 all privilege #所有权限
角色
方便权限的管理操作,(我看做把权限打包给一个角色)
1 2 3 4 5 6 7 8 9 10 create role r1 #创建角色 grant <权限> on <表名> to r1 (with grant option 加上后给了用户授权的权限) #给角色某个表的权限 revoke <权限> on <表名> from <用户名> #回收角色的某个权限 grant r1 to <用户名>
敏感度标记(作为了解) 1 2 3 4 5 6 7 敏感度标记分成若干级别 绝密(Top Secret,TS ) 机密(Secret, S) 可信(Confidential, C) 公开(Public,P) TS>=S>=C>=P
仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取客体
仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体