MySQL基础命令

目录

1.SQL语句基础

1.1 SQL简介

1.2 SQL语句分类

1.3 SQL语句的书写规范

2、数据库基本操作

2.1 创建数据库

语法:

案例:        

 扩展:

MySQL自带数据库:

2.2 字符集和校对规则

# 查看支持的字符集

# 查看支持的校对规则

# 查看默认的字符集和校对规则

2.3 修改数据库

语法:

案例:

2.4 删除数据库

语法:

案例:

3.数据表基本操作

3.1 创建表

语法:

案例一:

案例二:

4. 数据类型:

4.1数值型:

4.2字符型:

4.3时间和日期:

4.4 其他类型:

4.5 常用的数据类型:


1.SQL语句基础

1.1 SQL简介

        SQL:结构化查询语言(Structured Query Language),在关系型数据库上执行数据操作、数据检索以及 数据维护的标准语言。使用SQL语句,程序员和数据库管理员可以完成如下的任务

        改变数据库的结构

        更改系统的安全设置

        增加用户对数据库或表的许可权限

        在数据库中检索需要的信息

        对数据库的信息进行更新

1.2 SQL语句分类

MySQL致力于支持全套ANSI/ISO SQL标准。在MySQL数据库中,SQL语句主要可以划分为以下几类

        DDL(Data Definition Language):数据定义语言,定义对数据库对象(库、表、列、索引)的操作。 CREATE、DROP、ALTER、RENAME、 TRUNCATE等

        DML(Data Manipulation Language): 数据操作语言,定义对数据库记录的操作。 INSERT、DELETE、UPDATE、SELECT等

        DCL(Data Control Language): 数据控制语言,定义对数据库、表、字段、用户的访问权限和安全 级别。

        GRANT、REVOKE等

Transaction Control:事务控制

        COMMIT、ROLLBACK、SAVEPOINT等

1.3 SQL语句的书写规范

        在数据库系统中,SQL语句不区分大小写(建议用大写) 。

                但字符串常量区分大小写。

                SQL语句可单行或多行书写,以“;”结尾。

                关键词不能跨多行或简写。

                用空格和缩进来提高语句的可读性。

                子句通常位于独立行,便于编辑,提高可读性。

                        SELECT * FROM tb_table

                注释:

                SQL标准:

                        //。多行注释

                        “--” 单行注释

                MySQL注释: “#”        

2、数据库基本操作

2.1 创建数据库

语法:

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_option] ...
    
create_option: [DEFAULT] {
    CHARACTER SET [=] charset_name
  | COLLATE [=] collation_name
  | ENCRYPTION [=] {'Y' | 'N'}
}

案例:        

在window11的终端登陆数据库:

C:\Users\31922>mysql -uroot -p
Enter password: ******

查看此时所有的数据库:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| world              |
+--------------------+
6 rows in set (0.00 sec)

创建新的数据库TEATDATABASES并查看:

mysql> CREATE DATABASE TEATDATABASES;
Query OK, 1 row affected (0.01 sec)

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| teatdatabases      |
| world              |
+--------------------+

使用数据库:

mysql> use teatdatabases; 

退出此时所登陆的数据库,登陆新创建的数据库:

mysql> EXIT

C:\Users\31922>mysql -uroot -p teatdatabases

                                       -u用户名  -p   默认使用的数据库
Enter password: ******

查看当前连接的数据库:

mysql> select database();
+---------------+
| database()    |
+---------------+
| teatdatabases |
+---------------+
1 row in set (0.00 sec)

mysql>

创建数据库表,指定编码

mysql> create database db_hj default charset=utf8mb4;   创建数据库表,指定编码

Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db_hj              |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

 扩展:

查看当前连接的数据库

mysql> select database();
+---------------+
| database()    |
+---------------+
| teatdatabases |
+---------------+
1 row in set (0.00 sec)

 mysql> show databases like "db_%";模糊查询

+-----------------+
| Database (db_%) |
+-----------------+
| db_hj           |
+-----------------+
1 row in set (0.00 sec)

查看数据库版本

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.35    |
+-----------+
1 row in set (0.00 sec)

查看当前用户

mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

查看所有用户:

SELECT   User,Host,Password FROM mysql.user;

若此时在Linux中使用MySQL,则可以用system<命令>来查看调用linux中命令:

执行对应系统命令:

SYSTEM <命令>

        system cls  # 在 win中清屏

        system date 等

远程连接MYSQL:

C:\Users\31922>mysql -uroot -p123456 -h192.168.17.133 -P3306    #远程连接MYSQL

                                       用户     mysql密码    ip地址               端口

开启MySQL远程连接:

        网络保证通畅

        MySQL也默认没有开启远程登录(安全性)
MySQL的远程登录,是用户的权限,默认都是关闭的! !

        核心:修改系统用户表中的host字段,将该字段修改为 xxx%

MySQL自带数据库:

        Information_schema: 主要存储了系统中的一些数据库对象信息:如用户表信息、列信息、权限信 息、字符集信息、分区信息等。(数据字典表)

        performance_schema: 主要存储数据库服务器的性能参数

        mysql: 存储了系统的用户权限信息及帮助信息。

        sys: 5.7新增,之前版本需要手工导入。这个库是通过视图的形式把information_schema 和 performance_schema结合起来,查询出更加令人容易理解的数据

        test: 系统自动创建的测试数据库,任何用户都可以使用。

2.2 字符集和校对规则

        字符集是指一系列符号以及符号对应的编码的集合,比如英文字母可以使用 ASCII 编码,中文可以使用 GBK 或者 UTF-8 编码,校对规则则是指一种比较字符的规则,在排序或者比较字符的时候使用。

        每个字符集都会对应多个校对规则,是一对多的关系,而且每个字符集会有默认的校对规则,当我们在 创建数据库或者表时,如果只指定字符集,则使用字符集对应的默认校对规则。

        cs 大小写敏感

        ci 大小写不敏感

        bin 二进制编码比较

# 查看支持的字符集

mysql> show character set;

MySQL基础命令_第1张图片

解析:

        Charset 字符集名称

        Description 字符集描述

        Default collation 默认校对规则

        Maxlen 最大长度

# 查看支持的校对规则

mysql> show collation;

MySQL基础命令_第2张图片

解析:

        Collation 校对规则名称

        Charset 哪个字符集

        Id 校对规则编号

        Default 是否为默认校对规则

        Compiled 是否系统自带

        Sortlen 这与对字符集中表示的字符串进行排序所需的内存量有关。

        Pad_attribute 末尾空格是否参与比较

参考:

        1、非二进制字符串( CHAR 、 VARCHAR 、 TEXT )比较时,末尾空格的处理跟列的字符序有直接关系

        2、 MySQL5.7 及之前的版本,排序规则的类型都是 PAD SPACE ,会忽略字符串末尾的空格, LIKE 除外

        3、 MySQL8 开始,字符序增加了一个参数 Pad_attribute ,该参数的值不同,对字符串末尾空格的处理 方式不同 NO PAD :字符串末尾的空格会和其他字符一样,不会被忽略 PAD SPACE :字符串末尾的空格会被忽略, LIKE 除外

        4、如上针对的都是非二进制字符串的排序和比较,而不是储存

# 查看默认的字符集和校对规则

mysql> show create database teatdatabases;

create database teatdatabases;) # 创建数据库的命令

utf8和utf8mb4的区别

        MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的 unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。

        既然utf8能够存下大部分中文汉字,那为什么还要使用utf8mb4呢? 原来mysql支持的 utf8 编码最大字 符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文种平面(BMP)。也就是说,任何不在基本多文本平面的 Unicode字符,都无法使用 Mysql 的 utf8 字符集存储。包括 Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android 手机上),和很多不常用的汉字,以及任何新增的 Unicode 字符,如表情等 等(utf8的缺点)。

        因此在8.0之后,建议大家使用utf8mb4这种编码。

2.3 修改数据库

语法:

ALTER {DATABASE | SCHEMA} [db_name]
    alter_option ...
alter_option: {
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name
  | [DEFAULT] ENCRYPTION [=] {'Y' | 'N'}
  | READ ONLY [=] {DEFAULT | 0 | 1}
}

案例:

mysql> select database();

+---------------+
| database()    |
+---------------+
| teatdatabases |
+---------------+
1 row in set (0.00 sec)

mysql> show create database  teatdatabases; 

+---------------+-----------------------------------------------------------------------------------------------------------------------------------------+
| Database      | Create Database
                                                       |
+---------------+-----------------------------------------------------------------------------------------------------------------------------------------+
| teatdatabases | CREATE DATABASE `teatdatabases` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+---------------+-----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> alter database teatdatabases read only = 1;    #  read only=1 只读

Query OK, 1 row affected (0.01 sec)

mysql> show create database teatdatabases;

+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Database      | Create Database

  |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| teatdatabases | CREATE DATABASE `teatdatabases` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ /* READ ONLY = 1 */ |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> drop table td_emp1;   # 此时我们删除表td_emp1时,会提示(此时是只读模式)

ERROR 3989 (HY000): Schema 'teatdatabases' is in read only mode.

mysql> alter database teatdatabases read only = 0;

Query OK, 1 row affected (0.01 sec)

mysql> drop table tb_emp1;

Query OK,0 rows affected (0.01 sec)

mysql> show tables;     #,用于显示当前数据库中的所有表格(也称为表)

Empty set (0.02 sec)

2.4 删除数据库

语法:

DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

案例:

mysql> drop database testdatabase;  #  删除数据库 testdatabase

MySQL基础命令_第3张图片

3.数据表基本操作

         MySQL之所以成为主流:因为表与对象起相互促进的作用。

3.1 创建表

语法:

create table  [if not exists]   table_name (

                字段1   类型   【约束条件】,   #  有多个数据的话加中间“,”

                字段2   类型   【约束条件】,

                。。。。

                字段n  类型    【约束条件】         # 最后一个数据不加“,” 

);

案例一:

mysql> create table t_user (id int ,name varchar(255), age int );     # 创建表

mysql> desc t_user;    # 显示表结构    varchar(255)字符串(255长度)

+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int          | YES  |     | NULL    |       |
| name  | varchar(255) | YES  |     | NULL    |       |
| age   | int          | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

mysql> show columns from t_user;     # 显示表结构

+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int          | YES  |     | NULL    |       |
| name  | varchar(255) | YES  |     | NULL    |       |
| age   | int          | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

mysql> describe t_user;     # 显示表结构

+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int          | YES  |     | NULL    |       |
| name  | varchar(255) | YES  |     | NULL    |       |
| age   | int          | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> insert into t_user values(1, "sjt",16);  # 添加元素

Query OK, 1 row affected (0.01 sec)

mysql> select * from t_user;     # 查看表

+------+------+------+
| id   | name | age  |
+------+------+------+
|    1 | sjt  |   16 |
+------+------+------+
1 row in set (0.00 sec)

案例二:

创建如下要求的表 tb_emp1

MySQL基础命令_第4张图片

mysql> create database db_test;
Query OK, 1 row affected (0.00 sec)

mysql> use db_test;
Database changed
mysql> select  database();

+------------+
| database() |
+------------+
| db_test    |
+------------+
1 row in set (0.00 sec)

mysql> create table tb_emp1
    -> (id int(11),
    -> name varchar(25),
    -> deprid int(11),
    -> salary float);

Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> select * from tb_emp1;
Empty set (0.00 sec)

mysql> desc tb_emp1;

+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int         | YES  |     | NULL    |       |
| name   | varchar(25) | YES  |     | NULL    |       |
| deprid | int         | YES  |     | NULL    |       |
| salary | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> show create table tb_emp1\G;

*************************** 1. row ***************************
       Table: tb_emp1
Create Table: CREATE TABLE `tb_emp1` (
  `id` int DEFAULT NULL,
  `name` varchar(25) DEFAULT NULL,
  `deprid` int DEFAULT NULL,
  `salary` float DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

ERROR: 
No query specified

4. 数据类型:

4.1数值型

                TINYINT,SMALLINT,int,BIGINT,float,double,DECIMAL(len,精确位)

MySQL基础命令_第5张图片

        注意: 这些整数类型拥有额外的选项 UNSIGNED,通常,整数可以是负数或正数。如果添加 UNSIGNED压性 那么范围将从0开始,而不是某个负数。

4.2字符型:

        char(len)   定长,  

        varchar(len)   不定长(节约空间)# oracle 字符串使用的varchar2,

        text,     

MySQL基础命令_第6张图片

4.3时间和日期:

DATE(),TIME (),DATETIME(),TIMESTAMP()

MySQL基础命令_第7张图片

4.4 其他类型:

        binary,blob,Ienum(x,Y,z)

4.5 常用的数据类型:

MySQL基础命令_第8张图片

MySQL基础命令_第9张图片

你可能感兴趣的:(MySQL,mysql,数据库)