zoukankan      html  css  js  c++  java
  • SQL复习一(基础知识)

    1.什么是sql

      SQL(structure query language)是结构化查询语言,它是对关系型数据库的操作语言。它可以应用到所有的数据库中,例如:MySQL、Oracle、SQL server 等。

    1.2 语法要求

       SQL语句可以单行或者多行书写,以分号结尾;

       可以用空格和缩进来增强语句的可读性

       关键字不区分大小写,建议使用大写

    2.分类

      DDL:数据定义语言,用来定义数据库对象:数据库,表,列等

      DML:数据库操作语言,用来定义数据库记录(数据)

      DCL:数据库控制语言,用来定义访问权限和安全级别

      DQL:数据库查询语言,用来查询数据

    3.DDL

    3.1 基本操作

        查看所有数据库名称:show databases:

        切换数据库: use mydb1,切换到mydb1数据库

    3.2 操作数据库

         创建数据库:create database [if not exists] mydb1;

         创建名为mydb1 的数据库,如果mydb1的数据库不存在的话。

        删除数据库:drop database [if exists] mydb1;

        如果mydb1存在,则删除该数据库

        修改数据库编码:alter database mydb1 character set utf8

    3.3 数据类型

         int :整型

         double:浮点型,double(5,2)最多五位,其中必须有两位小数点

         decimal:泛型,在表示钱的方面使用,不会出现精度缺失问题

         char:固定长度的字符串类型

         varchar:可变长度的字符串类型

         text:字符串类型

         blob:字节类型

         date:日期类型,yyyy-mm-dd

         time:时间类型,hh:mm:ss

          timestamp:时间戳类型

    3.4   操作表

          创建表:

          create table 表名(

           列名 数据类型,

           列名  数据类型 )

    create table stu(
          sid   char(6),
          sname varchar(20),
          age     int,
          gender varchar(10)
    )

        查看当前数据库中所有表格名称:show tables;

        查看指定表的创建语句:show create table stu ,查看stu表的创建语句,

        查看表的结构:desc stu,查看stu表的结构,

        删除表:drop table stu;删除stu表

        修改表:

         1)添加列:给stu表添加classname 列,(add)

      alter table stu add (classname varchar(10))

         2)修改列类型:将stu表格的gender类型修改为char(2)(modify)

    alter table stu modify sgender char2);

         3)修改列名:将stu表格的gender修改为sex(change)

    alter table stu change gender sex char2);

         4)删除列:讲stu的classname列删除(drop)

    alter table stu drop classname;

        5)修改表的名称:修改stu的表名为student(rename)

    alter table stu rename to student;

    4.DML

    4.1 插入数据

         语法:

         insert into 表名(列名1,列名2,……)values(值1,值2,……)

    insert into stu(sno,sname) values(‘s_1001’,'zhangsan');

        insert into 表名 values (值1,值2,……);

    insert into stu(‘s_1002’,'lisa',32,'fe');

    4.2 修改数据

      语法:

      update 表名 set 列名1=值1,列名2=值2,……[where 条件]

    UPDATE stu SET sname=’zhangSanSan’, sage=32’, gender=’female’ WHERE sid=’s_1001’;
    UPDATE stu SET sname=’liSi’, age=20WHERE age>50 AND gender=’male’;
    UPDATE stu SET sname=’wangWu’, age=30WHERE age>60 OR gender=’female’;
    UPDATE stu SET gender=’female’ WHERE gender IS NULL
    UPDATE stu SET age=age+1 WHERE sname=’zhaoLiu’;

    4.3 删除数据

         语法 delete from 表名 [where 条件]

    delete from student where sno='s_1001';

     删除所有表中所有的记录

    delete from stu;
    truncate table stu;

    TRUNCATE和DELETE都可以删除表的所有记录,但有原理不同。DELETE的效率没有TRUNCATE高!

    TRUNCATE其实属性DDL语句,因为它是先DROP TABLE,再CREATE TABLE。而且TRUNCATE删除的记录是无法回滚的,但DELETE删除的记录是可以回滚的(回滚是事务的知识!)。

    5.DCL

    5.1创建用户

    语法:create user 用户名@地址 identified by ‘密码’

    CREATE USER user1@localhost IDENTIFIED BY123’; 
    CREATE USER user2@’%’ IDENTIFIED BY123’; 

    第一行只能在localhost的IP登录,第二个可以在任意地方登录。

    5.2给用户授权

    语法:grant 权限1,权限2……on 数据库.* to 用户名

    grant createalterdropinsertupdatedeleteselect on mydb1.* to user1;
    
    grant all on mydb1,* to user2

    5.3撤销授权

    语法:revoke 权限1,权限2…… on 数据库.* form 用户名

    REVOKE CREATE,ALTER,DROP ON mydb1.* FROM user1@localhost;

    5.4 查看用户权限

    语法:show grant for 用户名

    SHOW GRANTS FOR user1@localhost;

    5.5 删除用户

    语法: drop user 用户名

    DROP USER user1@localhost;

    5.6修改用户密码

    语法:

    USE mysql;

    UPDATE USER SET PASSWORD=PASSWORD(‘密码’) WHERE User=’用户名’ and Host=’IP’;

    FLUSH PRIVILEGES;

    UPDATE USER SET PASSWORD=PASSWORD('1234') WHERE User='user2' and Host=’localhost’;
    FLUSH PRIVILEGES;

       

  • 相关阅读:
    Linux学习33 crontab定时任务语法在线校验 上海
    python测试开发django175.bootstrap导航带下拉菜单的标签页标签页(navtabs) 上海
    python测试开发django172.jQuery 发送请求获取的数据设置为全局变量 上海
    team讨论有感
    蜕变(3)---模式
    uml建模的随想
    Bridge Strategy 和State的区别
    友元在模式中的运用
    Design&Pattern团队《设计模式在软件开发的应用》精华版
    面向对象乱弹(一)
  • 原文地址:https://www.cnblogs.com/yuqt/p/5984169.html
Copyright © 2011-2022 走看看