MySQL基本操作

目录

mysql启动与停止 

SQL通用语法

SQL分类

数据库操作

1). 查询所有数据库:

2). 查询当前数据库

3). 创建数据库

4). 删除数据库

5). 切换数据库

表操作

1).查询当前数据库所有表

2). 查看指定表结构

3). 查询指定表的建表语句

4). 创建表结构

5). 添加字段

6). 修改数据类型

7). 删除字段

8). 修改表名

9). 删除表

10). 删除指定表, 并重新创建表

11).在表内输入信息

12).更新修改表内信息

数据类型

1). 数值类型

2). 字符串类型

3). 日期时间类型


mysql启动与停止 

SQL通用语法

1.     SQL语句可以单行或多行书写,以分号结尾。
2.     SQL语句可以使用空格/缩进来增强语句的可读性。
3.     MySQL数括厍的SQL语句不区分大小写,关键字建议使用大写 


  注释:

  • .单行注释:-- 注释内容或#注释内容(MySQL特有)
  • ·多行注释:/*注释内容*/

SQL分类

SQL 语句,根据其功能,主要分为四类: DDL DML DQL DCL;

数据库操作

1). 查询所有数据库:

show databases ;

2). 查询当前数据库

select database() ;

3). 创建数据库

create database [ if not exists ] 数据库名 
[ default charset 字符集 ] 
[ collate 排序 规则 ] ;

例如:

create database text;
create database if not extists text;
  创建一个 itheima 数据库,并且指定字符集
create database itheima default charset utf8mb4;

4). 删除数据库

drop database [ if exists ] 数据库名 ;
drop database if not extists text;

5). 切换数据库

use 数据库名 ;

表操作

1).查询当前数据库所有表

show tables;

比如,我们可以切换到sys这个系统数据库,并查看系统数据库中的所有表结构。

use sys; 
show tables;

2). 查看指定表结构

desc 表名 ;

3). 查询指定表的建表语句

show create table 表名 ;

4). 创建表结构

CREATE TABLE 表名( 
字段1 字段1类型 [ COMMENT 字段1注释 ], 
字段2 字段2类型 [COMMENT 字段2注释 ], 
字段3 字段3类型 [COMMENT 字段3注释 ], ...... 
字段n 字段n类型 [COMMENT 字段n注释 ] 
) [ COMMENT 表注释 ] ; 

//注意结尾逗号的使用,最后一个字段后面没有逗号!!
create table yg( 
id int comment '编号', 
name varchar(50) comment '姓名', 
age int comment '年龄', 
gender varchar(1) comment '性别'
 ) comment '员工表';

同时也可以通过复制的方式创建表;

如:

假设我们有一个表 yg
mysql> desc yg;
+--------------+------------+------+-----+---------+-------+
| Field        | Type       | Null | Key | Default | Extra |
+--------------+------------+------+-----+---------+-------+
| 编号         | char(6)    | NO   | PRI | NULL    |       |
| 姓名         | char(10)   | NO   |     | NULL    |       |
| 性别         | tinyint(1) | YES  |     | NULL    |       |
| 政治面貌     | char(4)    | YES  |     | NULL    |       |
| 出生日期     | datetime   | YES  |     | NULL    |       |
+--------------+------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

mysql> select*from yg;
+--------+--------+--------+--------------+---------------------+
| 编号   | 姓名   | 性别   | 政治面貌     | 出生日期            |
+--------+--------+--------+--------------+---------------------+
| 100000 | Tom    |      1 | CH           | 2002-03-19 00:00:00 |
+--------+--------+--------+--------------+---------------------+




创建一个xxxx表同时复制yg表的所有信息
mysql> create table xxxx as select *from yg;

mysql> desc xxxx;
+--------------+------------+------+-----+---------+-------+
| Field        | Type       | Null | Key | Default | Extra |
+--------------+------------+------+-----+---------+-------+
| 编号         | char(6)    | NO   |     | NULL    |       |
| 姓名         | char(10)   | NO   |     | NULL    |       |
| 性别         | tinyint(1) | YES  |     | NULL    |       |
| 政治面貌     | char(4)    | YES  |     | NULL    |       |
| 出生日期     | datetime   | YES  |     | NULL    |       |
+--------------+------------+------+-----+---------+-------+
5 rows in set (0.02 sec)

mysql> select*from xxxx;
+--------+--------+--------+--------------+---------------------+
| 编号   | 姓名   | 性别   | 政治面貌     | 出生日期            |
+--------+--------+--------+--------------+---------------------+
| 100000 | Tom    |      1 | CH           | 2002-03-19 00:00:00 |
+--------+--------+--------+--------------+---------------------+
1 row in set (0.00 sec)






或者创建一个yyyy表,同时复制yg表部分信息
mysql> create table yyyy as select 姓名,性别,出生日期 from yg;

mysql> desc yyyy;
+--------------+------------+------+-----+---------+-------+
| Field        | Type       | Null | Key | Default | Extra |
+--------------+------------+------+-----+---------+-------+
| 姓名         | char(10)   | NO   |     | NULL    |       |
| 性别         | tinyint(1) | YES  |     | NULL    |       |
| 出生日期     | datetime   | YES  |     | NULL    |       |
+--------------+------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

mysql> select*from yyyy;
+--------+--------+---------------------+
| 姓名   | 性别   | 出生日期            |
+--------+--------+---------------------+
| Tom    |      1 | 2002-03-19 00:00:00 |
+--------+--------+---------------------+


 5). 添加字段

alter table 表名 ADD 字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];

如:为emp表增加一个新的字段昵称nickname,类型为varchar(20) 

alter table emp ADD nickname varchar(20) COMMENT '昵称';

mysql增加表中新列的方法:(在末尾添加新列(字段))

ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条件];

mysql> select*from salary;
+--------+---------+--------+
| 编号   | 收入    | 支出   |
+--------+---------+--------+
| 000001 |  2100.8 | 123.09 |
| 010008 | 1582.62 |  88.03 |
| 020010 |    2860 |    198 |
| 020018 | 2347.68 |    180 |
| 102201 | 2569.88 | 185.65 |
| 102208 |    1980 |    100 |
| 108991 | 3259.98 | 281.52 |
| 111006 | 2347.68 |  79.58 |
| 210678 |    2240 |    121 |
| 302566 |  2980.7 |  210.2 |
| 308759 | 2531.98 | 199.08 |
| 504209 | 2066.15 |    108 |
+--------+---------+--------+


mysql> alter table salary add column 工资 int(4);

mysql> select*from salary;
+--------+---------+--------+------+
| 编号   | 收入    | 支出   | 工资 |
+--------+---------+--------+------+
| 000001 |  2100.8 | 123.09 | NULL |
| 010008 | 1582.62 |  88.03 | NULL |
| 020010 |    2860 |    198 | NULL |
| 020018 | 2347.68 |    180 | NULL |
| 102201 | 2569.88 | 185.65 | NULL |
| 102208 |    1980 |    100 | NULL |
| 108991 | 3259.98 | 281.52 | NULL |
| 111006 | 2347.68 |  79.58 | NULL |
| 210678 |    2240 |    121 | NULL |
| 302566 |  2980.7 |  210.2 | NULL |
| 308759 | 2531.98 | 199.08 | NULL |
| 504209 | 2066.15 |    108 | NULL |
+--------+---------+--------+------+


//可以用于做两列数的运算

mysql> update salary set 工资=收入-支出;

mysql> select*from salary;
+--------+---------+--------+------+
| 编号   | 收入    | 支出   | 工资 |
+--------+---------+--------+------+
| 000001 |  2100.8 | 123.09 | 1978 |
| 010008 | 1582.62 |  88.03 | 1495 |
| 020010 |    2860 |    198 | 2662 |
| 020018 | 2347.68 |    180 | 2168 |
| 102201 | 2569.88 | 185.65 | 2384 |
| 102208 |    1980 |    100 | 1880 |
| 108991 | 3259.98 | 281.52 | 2978 |
| 111006 | 2347.68 |  79.58 | 2268 |
| 210678 |    2240 |    121 | 2119 |
| 302566 |  2980.7 |  210.2 | 2770 |
| 308759 | 2531.98 | 199.08 | 2333 |
| 504209 | 2066.15 |    108 | 1958 |
+--------+---------+--------+------+



//温故而知新

mysql> alter table salary change 工资 工资 double(6,2);

mysql> update salary set 工资=收入-支出;

mysql> select*from salary;
+--------+---------+--------+---------+
| 编号   | 收入    | 支出   | 工资    |
+--------+---------+--------+---------+
| 000001 |  2100.8 | 123.09 | 1977.71 |
| 010008 | 1582.62 |  88.03 | 1494.59 |
| 020010 |    2860 |    198 | 2662.00 |
| 020018 | 2347.68 |    180 | 2167.68 |
| 102201 | 2569.88 | 185.65 | 2384.23 |
| 102208 |    1980 |    100 | 1880.00 |
| 108991 | 3259.98 | 281.52 | 2978.46 |
| 111006 | 2347.68 |  79.58 | 2268.10 |
| 210678 |    2240 |    121 | 2119.00 |
| 302566 |  2980.7 |  210.2 | 2770.50 |
| 308759 | 2531.98 | 199.08 | 2332.90 |
| 504209 | 2066.15 |    108 | 1958.15 |
+--------+---------+--------+---------+





6). 修改数据类型

(只修改类型)

ALTER TABLE 表名 modify 字段名 新数据类型 (长度);
修改字段名和字段类型 (同时修改类型和名字)
ALTER TABLE 表名 change 旧字段名 新字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];

例如:将emp表的nickname字段修改为username,类型为varchar(30)

ALTER TABLE emp change nickname username varchar(30) COMMENT '昵称'
1.掌握修改表结构的方法;
 增加列
   alter table 表名 add 列名 列类型
   alter table 表名 add 列名 列类型 after 列名
 修改列类型
   alter table 表名 modify 列名 新类型
 修改列
   alter table 表名 change 列名 新字段名 字段选项 ;
 调整列位置
   alter table 表名 change 列名 新列名 字段选项 after字段名
 删除列
   alter table 表名 drop column 字段名
2.插入记录;
insert into 表名 values

例如: 

//创建表
mysql> CREATE TABLE yg(    
    ->   编号 char(6)  NOT NULL primary key,
    ->   姓名 char(10) NOT NULL,
    ->   出生日期 date,
    ->   性别 tinyint(1) NOT NULL DEFAULT 1,
    ->   籍贯 char(10)
    -> );

mysql> desc yg;
+--------------+------------+------+-----+---------+-------+
| Field        | Type       | Null | Key | Default | Extra |
+--------------+------------+------+-----+---------+-------+
| 编号         | char(6)    | NO   | PRI | NULL    |       |
| 姓名         | char(10)   | NO   |     | NULL    |       |
| 出生日期     | date       | YES  |     | NULL    |       |
| 性别         | tinyint(1) | NO   |     | 1       |       |
| 籍贯         | char(10)   | YES  |     | NULL    |       |
+--------------+------------+------+-----+---------+-------+


//添加一个列
mysql> alter table yg add xxx char(1);

mysql> desc yg;
+--------------+------------+------+-----+---------+-------+
| Field        | Type       | Null | Key | Default | Extra |
+--------------+------------+------+-----+---------+-------+
| 编号         | char(6)    | NO   | PRI | NULL    |       |
| 姓名         | char(10)   | NO   |     | NULL    |       |
| 出生日期     | date       | YES  |     | NULL    |       |
| 性别         | tinyint(1) | NO   |     | 1       |       |
| 籍贯         | char(10)   | YES  |     | NULL    |       |
| xxx          | char(1)    | YES  |     | NULL    |       |
+--------------+------------+------+-----+---------+-------+



//添加一个列在某列之后
mysql> alter table yg add yyy char(1) after 姓名;

mysql> desc yg;
+--------------+------------+------+-----+---------+-------+
| Field        | Type       | Null | Key | Default | Extra |
+--------------+------------+------+-----+---------+-------+
| 编号         | char(6)    | NO   | PRI | NULL    |       |
| 姓名         | char(10)   | NO   |     | NULL    |       |
| yyy          | char(1)    | YES  |     | NULL    |       |
| 出生日期     | date       | YES  |     | NULL    |       |
| 性别         | tinyint(1) | NO   |     | 1       |       |
| 籍贯         | char(10)   | YES  |     | NULL    |       |
| xxx          | char(1)    | YES  |     | NULL    |       |
+--------------+------------+------+-----+---------+-------+



//修改“出生日期”类型为“datetime”
mysql> alter table yg modify 出生日期 datetime;


mysql> desc yg;
+--------------+------------+------+-----+---------+-------+
| Field        | Type       | Null | Key | Default | Extra |
+--------------+------------+------+-----+---------+-------+
| 编号         | char(6)    | NO   | PRI | NULL    |       |
| 姓名         | char(10)   | NO   |     | NULL    |       |
| yyy          | char(1)    | YES  |     | NULL    |       |
| 出生日期     | datetime   | YES  |     | NULL    |       |
| 性别         | tinyint(1) | NO   |     | 1       |       |
| 籍贯         | char(10)   | YES  |     | NULL    |       |
| xxx          | char(1)    | YES  |     | NULL    |       |
+--------------+------------+------+-----+---------+-------+



//同时修改字段名与类型
mysql> alter table yg change xxx XYG double;

mysql> desc yg;
+--------------+------------+------+-----+---------+-------+
| Field        | Type       | Null | Key | Default | Extra |
+--------------+------------+------+-----+---------+-------+
| 编号         | char(6)    | NO   | PRI | NULL    |       |
| 姓名         | char(10)   | NO   |     | NULL    |       |
| yyy          | char(1)    | YES  |     | NULL    |       |
| 出生日期     | datetime   | YES  |     | NULL    |       |
| 性别         | tinyint(1) | NO   |     | 1       |       |
| 籍贯         | char(10)   | YES  |     | NULL    |       |
| XYG          | double     | YES  |     | NULL    |       |
+--------------+------------+------+-----+---------+-------+



//用于位移某列,同时也可以修改(未赋值的转化为初始值)
mysql> alter table yg change 性别 性别 tinyint(1) after 姓名;

mysql> desc yg;
+--------------+------------+------+-----+---------+-------+
| Field        | Type       | Null | Key | Default | Extra |
+--------------+------------+------+-----+---------+-------+
| 编号         | char(6)    | NO   | PRI | NULL    |       |
| 姓名         | char(10)   | NO   |     | NULL    |       |
| 性别         | tinyint(1) | YES  |     | NULL    |       |
| yyy          | char(1)    | YES  |     | NULL    |       |
| 出生日期     | datetime   | YES  |     | NULL    |       |
| 籍贯         | char(10)   | YES  |     | NULL    |       |
| XYG          | double     | YES  |     | NULL    |       |
+--------------+------------+------+-----+---------+-------+




//删除“籍贯”列
mysql> alter table yg drop column 籍贯;

mysql> desc yg;
+--------------+------------+------+-----+---------+-------+
| Field        | Type       | Null | Key | Default | Extra |
+--------------+------------+------+-----+---------+-------+
| 编号         | char(6)    | NO   | PRI | NULL    |       |
| 姓名         | char(10)   | NO   |     | NULL    |       |
| 性别         | tinyint(1) | YES  |     | NULL    |       |
| yyy          | char(1)    | YES  |     | NULL    |       |
| 出生日期     | datetime   | YES  |     | NULL    |       |
| XYG          | double     | YES  |     | NULL    |       |
+--------------+------------+------+-----+---------+-------+




//插入数据并查看所以记录
mysql> insert into yg values('100000','Tom','1','CH','x','2002-03-19','3.14');

mysql> select*from yg;
+--------+--------+--------+--------------+------+---------------------+------+
| 编号   | 姓名   | 性别   | 政治面貌     | yyy  | 出生日期            | XYG  |
+--------+--------+--------+--------------+------+---------------------+------+
| 100000 | Tom    |      1 | CH           | x    | 2002-03-19 00:00:00 | 3.14 |
+--------+--------+--------+--------------+------+---------------------+------+

7). 删除字段

ALTER TABLE 表名 drop 字段名;

8). 修改表名

ALTER TABLE 表名 rename to 新表名;

9). 删除表

drop table (if exists) 表名;

10). 删除指定表, 并重新创建表

truncate table 表名;

作用为清空当前表;

11).在表内输入信息 source

输入信息:

insert into 表名 values('1','sxs','啦啦',.........);

文件中导入数据到自己命名的数据库中:

source 地址/文件名.文件格式

 例如:

mysql> source C:\Users\jolly\Downloads/sy1.sql

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected, 1 warning (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)    //表明成功

12).更新修改表内信息

mysql> desc kc;
+----------+------------+------+-----+---------+-------+
| Field    | Type       | Null | Key | Default | Extra |
+----------+------------+------+-----+---------+-------+
| 课程号   | char(3)    | NO   | PRI | NULL    |       |
| 课程名   | char(16)   | NO   |     | NULL    |       |
| 开课学期 | tinyint(1) | NO   |     | 1       |       |
| 学时     | tinyint(1) | NO   |     | NULL    |       |
| 学分     | tinyint(1) | YES  |     | NULL    |       |
+----------+------------+------+-----+---------+-------+

mysql> select *from kc;
+--------+----------------+----------+------+------+
| 课程号 | 课程名         | 开课学期 | 学时 | 学分 |
+--------+----------------+----------+------+------+
| 101    | 计算机基础     |        1 |   80 |    5 |
| 102    | 程序设计与语言 |        2 |   68 |    4 |
| 206    | 离散数学       |        4 |   68 |    4 |
| 208    | 数据结构       |        5 |   68 |    4 |
| 209    | 操作系统       |        6 |   68 |    4 |
| 210    | 计算机原理     |        5 |   85 |    5 |
| 212    | 数据库原理     |        7 |   68 |    4 |
| 301    | 计算机网络     |        7 |   51 |    3 |
| 302    | 软件工程       |        7 |   51 |    3 |
+--------+----------------+----------+------+------+


//修改“kc”表的所有课程的课程名,将所有课程的课程名后都加上“课”,
比如原来“101”课程的课程名为“计算机基础”,修改后的课程名为“计算机基础课”。

//mysql使用函数concat,concat使用方法为concat(字符串,字符串)

mysql> update kc set 课程名 =concat(课程名,'课');

mysql> select*from kc;
+--------+------------------+----------+------+------+
| 课程号 | 课程名           | 开课学期 | 学时 | 学分 |
+--------+------------------+----------+------+------+
| 101    | 计算机基础课     |        1 |   80 |    5 |
| 102    | 程序设计与语言课 |        2 |   68 |    4 |
| 206    | 离散数学课       |        4 |   68 |    4 |
| 208    | 数据结构课       |        5 |   68 |    4 |
| 209    | 操作系统课       |        6 |   68 |    4 |
| 210    | 计算机原理课     |        5 |   85 |    5 |
| 212    | 数据库原理课     |        7 |   68 |    4 |
| 301    | 计算机网络课     |        7 |   51 |    3 |
| 302    | 软件工程课       |        7 |   51 |    3 |
+--------+------------------+----------+------+------+



//将kc表的所有学分-3

mysql> update kc set 学分=学分-3;

mysql> select*from kc;
+--------+------------------+----------+------+------+
| 课程号 | 课程名           | 开课学期 | 学时 | 学分 |
+--------+------------------+----------+------+------+
| 101    | 计算机基础课     |        1 |   80 |    2 |
| 102    | 程序设计与语言课 |        2 |   68 |    1 |
| 206    | 离散数学课       |        4 |   68 |    1 |
| 208    | 数据结构课       |        5 |   68 |    1 |
| 209    | 操作系统课       |        6 |   68 |    1 |
| 210    | 计算机原理课     |        5 |   85 |    2 |
| 212    | 数据库原理课     |        7 |   68 |    1 |
| 301    | 计算机网络课     |        7 |   51 |    0 |
| 302    | 软件工程课       |        7 |   51 |    0 |
+--------+------------------+----------+------+------+




//将“xs_kc”表的所有课程号为“101”的记录删除

mysql> delete from kc where 课程号=101;

mysql> select *from kc;
+--------+------------------+----------+------+------+
| 课程号 | 课程名           | 开课学期 | 学时 | 学分 |
+--------+------------------+----------+------+------+
| 102    | 程序设计与语言课 |        2 |   68 |    1 |
| 206    | 离散数学课       |        4 |   68 |    1 |
| 208    | 数据结构课       |        5 |   68 |    1 |
| 209    | 操作系统课       |        6 |   68 |    1 |
| 210    | 计算机原理课     |        5 |   85 |    2 |
| 212    | 数据库原理课     |        7 |   68 |    1 |
| 301    | 计算机网络课     |        7 |   51 |    0 |
| 302    | 软件工程课       |        7 |   51 |    0 |
+--------+------------------+----------+------+------+





数据类型

1). 数值类型

常用用法:

年龄字段;不会出现负数 , 而且人的年龄不会太大  所以用
age tinyint unsigned
分数 ;   总分 100 , 最多出现一位小数
score double(4,1)

对于精度型:decimal(包括小数位的所有位数,小数位);

2). 字符串类型

 一般来说,只有char 和 varchar常用,其他相对较少用;

char varchar 都可以描述字符串:

  • char是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关
  • 而varchar是变长字符串,指定的长度为最大占用长度
  • 相对来说,char的性能会更高,更快些,varchar则可以省空间

3). 日期时间类型

 常用用法:

  生日字段;  birthday
birthday date

创建时间; createtime

createtime datetime

例子:

create table emp( 
id int comment '编号', 
workno varchar(10) comment '工号', 
name varchar(10) comment '姓名', 
gender char(1) comment '性别', 
age tinyint unsigned comment '年龄', 
idcard char(18) comment '身份证号', 
entrydate date comment '入职时间' 
) comment '员工表';

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NO.-LL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值