SQL语言【奥门永利误乐域】

SQL(Structure Query
Language)语言是数据库的核心语言,主要介绍其中3大类:数据定义语言DDL,数据操纵语言DML,数据控制语言DCL。

进入并修改提示符,临时生效

mysql propmt=”(\u@\h) \D [\d)]>_”
需要写入文件/etc/

  DDL:数据定义语言,主要用于管理数据库组件,例如表、索引、视图、用户、存储过程,命令有CREATE、ALTER、DROP等;
  DML:数据操纵语言,主要用管理表中的数据,实现数据的增、删、改、查,命令有INSERT,
DELETE, UPDATE, SELECT等;
  DCL:数据控制语言,用来授予或回收访问数据库的某种特权,命令有GRANT,
REVOKE等;

登陆数据库

mysql -uroot -pcentos

DDL

 DDL是对数据库内部的对象进行创建、删除、修改的操作语言,它和DML语言的最大区别是:DML
只是对表内部数据的操作,而不涉及到表的定义、结构的修改。

  • 创建数据库

    CREATE {DATABASE | SCHEMA} [IF
NOT EXISTS] db_name;

    注意:创建数据库时可以指明字符集跟排序规则:
      [DEFAULT] CHARACTER SET [=] charset_name (指明字符集)
      [DEFAULT] COLLATE [=] collation_name (排序规则)
      查看支持的所有字符集:SHOW CHARACTER SET
      查看支持的所有排序规则:SHOW COLLATION

    示例:CREATE DATABASE IF NOT EXISTS students CHARACTER SET
utf8 COLLATE utf8_general_ci; (创建字符集为utf8的students数据库)
      SHOW CREATE DATABASE students;
(查看自己创建的数据库相关信息)
      SHOW DATABASES; (显示所有数据库)
      USE students; (使用students数据库)

  • 修改数据库

    ALTER {DATABASE | SCHEMA}
[db_name];

      [DEFAULT] CHARACTER SET [=] charset_name;
      [DEFAULT] COLLATE [=] collation_name;

*    示例:*ALTER DATABASE students CHARACTER SET gbk COLLATE
gbk_chinese_ci; (修改数据库字符集)

  • 删除数据库

    DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;

    示例:DROP DATABASE IF EXISTS students; (删除数据库)

  • 查看数据库

    SHOW DATABASES LIKE  ”;

    示例:SHOW DATABASES LIKE ‘%db%’;
(查看数据库名中包含’db’的数据库)

  • 创建表

    CREATE TABLE [IF NOT EXISTS]
tbl_name (create_defination) [table_options]

    其中create_defination可以包含字段、键、索引:
      字段:col_name data_type
      键:
        PRIMARY KEY (col1, col2, …)
        UNIQUE KEY (col1, col2,…)
        FOREIGN KEY (column)
      索引:
        KEY|INDEX [index_name] (col1, col2, …)
    其中table_options可以包含存储引擎:
      ENGINE [=] engine_name
      查看数据库支持的所有存储引擎类型:mysql> SHOW
ENGINES;

      查看某表的存储引擎类型:mysql> SHOW TABLE STATUS
[LIKE] tbl_name;

    示例:CREATE TABLE students(id int auto_increment,name
varchar(20) not null,age tinyint unsigned,sex tinyint(1) not null
default 1,subject_name varchar(20) not null,subject_no smallint not
null,primary key(id)); (创建students表)
      SHOW TABLES; (查看数据库中所有的表)
      DESC students; (查看students表结构)
      SHOW TABLE STATUS like ‘students’\G; (查看表信息)

  • 修改表 

    ALTER [ ONLINE|OFFLINE]
[IGNORE] TABLE tbl_name
[alter_specification[,alter_specification] …]

    其中 alter_specification:
      字段:
        添加:ADD [COLUMN] col_name data_type [
FIRST|AFTER col_name ]

        删除:DROP [COLUMN] col_name
        修改:
          CHANGE [COLUMN] old_col_name new_col_name
column_definition [ FIRST|AFTER col_name ]

          MODIFY [COLUMN] col_name column_definition [
FIRST|AFTER col_name]

        键:
          添加:ADD { PRIMARY|UNIQUE|FOREIGN } KEY
(col1,col2,…)

          删除:
            主键:DROP PRIMARY KEY
            外键:DROP FOREIGN KEY fk_symbol
        索引:
          添加:ADD { INDEX|KEY } [index_name]
(col1,col2,…)

          删除:DROP { INDEX|KEY } index_name
          查看表上的索引的信息:mysql> SHOW INDEXES FROM
tbl_name;

        表选项:
*          ENGINE [=] engine_name

  •           RENAME new_tbl_name

      示例:ALTER TABLE students RENAME student;
(重命名表)
        ALTER TABLE student ADD subject_score smallint;
(添加subject_score字段)
        ALTER TABLE student DROP age; (删除age字段)
        ALTER TABLE student modify subject_score smallint not
null; (修改subject_score字段数据类型)
        ALTER TABLE student CHANGE sex gender tinyint(1) not
null default 1; (变更sex字段为gender字段)
        ALTER TABLE student ADD index id_name (id,name);
(添加索引信息id_name)
        SHOW INDEXES from student\G; (查看student表索引信息)

  •  删除表

    DROP TABLE [IF EXISTS]
tbl_name[,tbl_name] …

    示例:DROP TABLE IF EXISTS student; (删除表)

  • 索引管理
    • 创建索引

      CREATE [
UNIQUE|FULLTEXT|SPATIAL ] INDEX index_name [ BTREE|HASH ] ON
tbl_name (col1,col2, …)

        示例:CREATE index id_name ON student(id,name);
(创建id_name索引)

    • 删除索引

      DROP INDEX index_name ON
tbl_name

        示例:DROP index id_name ON student;
(删除索引id_name)

进入mysql这个数据库

use mysql

DML

DML
操作是指对数据库中表记录的操作,主要包括表记录的插入(insert)、更新(update)、删除(delete)和查询(select)。

  • 插入数据

  INSERT [INTO] tbl_name [(col1,
…)] { VALUES|VALUE }(val1, …),(…),…

  注意:字符型数据要加引号,数值型数据不能加引号。

  示例:INSERT INTO student values(1,”Will”,1,”C++”,0001,70);
    INSERT INTO student
VALUE(2,”Will”,1,”C”,0002,60),(3,”Walter”,1,”C++”,001,80);
    INSERT INTO
student(name,subject_name,subject_no,subject_score)
VALUES(“Alex”,”C#”,0003,75),(“Walter”,”C”,0002,67);
    INSERT INTO
student(name,gender,subject_name,subject_no,subject_score)
VALUES(“Alice”,0,”C++”,0001,86),(“Rose”,0,”C#”,0003,82);

  • 更新数据

  UPDATE [LOW_PRIORITY] [IGNORE]
tbl_name SET col_name1=value1[,col_name2=value2]…[WHERE
where_condition] [ORDER BY…] [LIMIT row_count]

  示例:UPDATE student set subject_no=2 WHERE id=4;
(修改id=4的数据的subject_no字段数值为2)
    SELECT * FROM student ORDER BY subject_score desc;
(降序查看表内容)
    SELECT * FROM student ORDER BY subject_score;
(默认升序查看表内容)

  • 查看数据
    • SELECT * FROM tbl_name;
    • SELECT col1,col2,… FROM tbl_name;
      (注意:字段可以显示为别名,col_name AS col_alias)
    • SELECT col1,… FROM tbl_name WHERE clause;  (注意:WHERE
      clause用于指明挑选条件,如 age > 30)

      • 常用的操作符有:>, <, >=, <=, ==, !=, and, or,
        not, BETWEEN…AND…, LIKE ‘PATTERN’, IS NULL, IS NOT NULL
      • 通配符:%,任意长度的任意字符;_:任意单个字符;RLIKE
        ‘PATTERN’:正则表达式对字符串做模式匹配
    • SELECT col1,…FROM tbl_name [WHERE clause] ORDER BY
      col_name,col_name2,…[ASC|DESC];(ASC:升序;DESC: 降序)
  • 删除数据

  DELETE FROM tbl_name [WHERE
where_condition] [ORDER BY …] [LIMIT row_count]

  示例:DELETE FROM student WHERE subject_score<=70;
(删除subject_score<=70的数据)

查看当前数据库系统二进制程序的主目录

show variables like “basedir”

DCL

用于控制不同数据段直接的许可和访问级别的语句,定义了数据库、表、字段、用户的访问权限和安全级别。

  • 创建用户

  CREATE USER ‘username’@’host’
[IDENTIFIED BY ‘password’];

  示例:CREATE USER ‘test’@’192.168.4.%’ IDENTIFIED BY ‘123456’;
(创建只允许)
    SELECT User,Host,Password FROM mysql.user; (查看用户)

  • 删除用户

  DROP USER ‘user’@’host’
[,user@host]…

  示例:DROP USER ‘test’@’192.168.4.%’;

  • 授权

  GRANT priv_type,… ON
db_name.tbl_name TO ‘user’@’host’ [IDENTIFIED BY
‘password’];

  其中 priv_type: ALL[PRIVILEGES]
    db_name.tbl_name:
        \.*:所有库的所有表         db_name.*:指定库的所有表         db_name.tbl_name:指定库的特定表         db_name.routine_name:指定库上的存储过程或存储函数   查看指定用户所获得的授权:       SHOW GRANTS FOR CURRENT_USER;*

  示例:GRANT ALL ON studb.student to ‘test’@’192.168.4.%’;
(授权192.168.4网段的test用户所有操纵studb数据库的student表的权限)
    SHOW GRANTS FOR ‘test’@’192.168.4.%’; (查看test用户的授权请看)

  • 回收权限

  REVOKE priv_type,… ON
db_name.tbl_name FROM ‘user’@’host’;

  注意:MariaDB服务进程启动时,会读取mysql库的所有授权表至内存中:
    (1)
GRANT或REVOKE命令等执行的权限操作会保存于表中,MariaDB此时一般会自动重读授权表,权限修改会立即生效;

    (2) 其它方式实现的权限修改,要想生效,必须手动运行FLUSH
PRIVILEGES命令

*  示例:*REVOKE DELETE,UPDATE ON studb.student FROM
‘test’@’192.168.4.%’; (回收test用户对student表的delete,update权限)

 

查看当前系统数据库对外提供服务的服务端口

show variables like “port”

查看当前数据库使用的字符集

show variables like “%character_set%”

刷新权限配置

修改完权限以后 一定要刷新服务,或者重启服务,刷新服务用的

flush privileges

查看数据库引擎

show engines;
SHOW VARIABLES LIKE ‘have%’ ;

查询默认存储引擎:

SHOW VARIABLES LIKE ‘storage_engine’ ;

清除mysql管理账号root密码

修改主配置文件
vim /etc/my.cnf
在[mysqld]的段下添加上一句
skip_grant_tables
重启服务
systemctl restart mariadb
直接进入mysql
>update user set password=password(“new_pass”) where
user=”root”;
>flush privileges;

进入数据库,修改密码的指令

update mysql.user set password=password(“centos”);

防止在没写where条件下误操作删除,为了不让删除,如下操作

在/etc/my.cnf.d/client.cnf 文件
[client]下面添加如下行
safe_updates

更改默认的存储引擎,

可以在my.ini中进行修改。将“default-storage-engine=INNODB”更改为“default-storage-engine=
MyISAM”。然后重启服务,修改生效。

查看支持所有字符集:

SHOW CHARACTER SET;

查看支持所有排序规则:

SHOW COLLATION;

创建数据库

create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创建数据库
采用create schema和create database创建数据库的效果一样。

mysql> CREATE DATABASE 库名;
CREATE DATABASE IF NOT EXISTS 库名 DEFAULT CHARSET utf8;

删除数据库:

mysql> DROP DATABASE 库名;

查询所有数据库

show databases;

创建表

mysql> USE 库名;
mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));

修饰符
所有类型:
NULL 数据列可包含NULL值
NOT NULL 数据列不允许包含NULL值
DEFAULT 默认值
PRIMARY KEY 主键
UNIQUE KEY 唯一键
CHARACTER SET name 指定一个字符集 数值型
AUTO_INCREMENT 自动递增,适用于整数类型
UNSIGNED 无符号 表示0到原本范围的最大值

举例:

 use dongwu;
    create table pet(
              name varchar(20),        #名字
              owner varchar(20),       #主人
              species varchar(20),     #种类
              sex char(1),             #性别
              birth date,              #出生日期
              death date               #死亡日期
 )

查询所有表

show tables;

查询表中所有的列

show columns from 表名
— 或
describe 表名;

查看表的状态,可看使用的是什么存储引擎

SHOW TABLE STATUS LIKE ‘people’\G

查询表结构

DESC 表名;

MariaDB [testdb]> desc people;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(11)  | NO   |     | NULL    |       |
| name  | char(20) | YES  |     | NULL    |       |
| sex   | char(2)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.00 sec)

查看表上的索引

SHOW INDEXES FROM [数据库名.]表名;

删除数据表:

mysql> DROP TABLE 表名;

将表中记录清空:

mysql> DELETE FROM 表名;

发表评论

电子邮件地址不会被公开。 必填项已用*标注