目录
  1. 1. 数据库操作命令
    1. 1.1. 常用SQL命令
    2. 1.2. 通配符
    3. 1.3. 库的基本操作
    4. 1.4. 视图操作
    5. 1.5. 表的基本操作
    6. 1.6. 将查询数据放入另一个表
    7. 1.7. alert
      1. 1.7.0.0.1. 1.修改某个表的字段类型及指定为空或非空
      2. 1.7.0.0.2. 2.修改某个表的字段名称及指定为空或非空
  • 1.8. 多库联合查询
  • 1.9. 嵌套查询
  • 1.10. 自身连接查询
  • 1.11. 表连接
  • 1.12. 查询结果不重复
  • 1.13. 查询结果命名
  • 1.14. 查询条件
  • 1.15. 集合查询
  • 1.16. 查询结果操作
  • 1.17. where 条件查询可跟
    1. 1.17.1. 创建用户,设置权限
    2. 1.17.2. 权限
    3. 1.17.3. 角色
    4. 1.17.4. 敏感度标记(作为了解)
  • sql命令

    数据库操作命令

    • sql命令对大小写不敏感,大小写作用相同

    命令行界面命令(要加;)

    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包括nameage两个字段,类型是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
    • 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取客体
    • 仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体
    文章作者: zzl
    文章链接: https://www.zzl14.xyz/2020/04/10/sql命令/
    版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 try
    打赏
    • 微信
    • 支付宝

    评论