MySQL数据库是现在各个平台使用最多的数据库,他承载着大量网页的运行,是非常重要的数据库,SQL server,Oracle 等大中型数据库由于只用的要求很高(需要二次开发),费用昂贵,所以众多的小型企业更加倾向于MySQL的使用。
MySQL基本结构:
id | name | age | sex | tel |
---|---|---|---|---|
1 | John | 18 | M | 13900000 |
1 | 李连杰 | 28 | M | 13900000 |
1 | 成龙 | 21 | M | 13900000 |
1 | 陈佩斯 | 34 | M | 13900000 |
从图中可以看出MySQL数据库可以有多个库,每个库可以有多个表组成。这也就是我们看的到的MySQL的基本结构。
MySQL的库、表级操作
有数据库就的有操作,下面我们来看MySQL数据库的操作--sql语句
首先注意:
1、sql语句不会严格的区分大小写,默认大写是程序代码,小写是程序员写的代码。
2、语句结束符:每个语句都是以 ; 结束 或者以 \g 结束。
3、数据类型:强制数据类型,每个数据都有自己的数据类型。
4、逗号:创建表的时候最后一行不需要逗号。
MySQL数据库的登陆操作:
mysql -uroot -p
server@ll:~$ mysql -uroot -p #登陆数据库
Enter password: #填写MySQL数据库的root密码登陆
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.7.25-0ubuntu0.16.04.2 (Ubuntu)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>exit #exit 退出数据库
Bye
server@ll:~$
库级操作语言实例:
mysql>show databases; #显示所有库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql>create database if not exists db_name; #创建库,if not exists 可选如果有重复创建库的话会报错,有if not exists 就不会报错。
Query OK, 1 row affected (0.00 sec)
mysql>show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db_name |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql>use db_name; #进入数据库
Database changed
mysql>drop database if exists db_name; #删除库 if exists 与创建时if not exists相同
Query OK, 0 rows affected (0.00 sec)
mysql>
库级操作语句:
show databases; #显示库
create database if not exists db_name; #创建库
use db_name; #进入库
drop database if exists db_name; #删除库
表级操作语句实例:
mysql>show tables; #显示所有表
Empty set (0.00 sec) #还没创建表就会显示空
mysql>create table if not exists tb_name( #创建表
->id int,
->name varchar(20),
->age tinyint);
Query OK, 0 rows affected (0.29 sec)
mysql>desc tb_name; #显示表字段信息
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| age | tinyint(4) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql>show create table tb_name; #查询建表信息
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tb_name | CREATE TABLE `tb_name` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`age` tinyint(4) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select database(); #查询正在使用的表
+--------------+
| database() |
+--------------+
| tb_name |
+--------------+
1 row in set (0.00 sec)
mysql>drop table tb_name; #删除表
Query OK, 0 rows affected (0.21 sec)
mysql>
mysql>
表级操作语句:
show tables; #显示所有表
create table if not exists tb_name(create definition...); #创建表
desc tb_name; #显示表字段信息
show create table tb_name; #查询建表信息
drop table tb_name; #删除表
表中字段的操作:
insert into table values() 插入字段 与 select * from tb_name; 查询字段
mysql>inserter into tb_name(name,age)values('john',18); #指定字段插入
Query OK, 0 rows affected (0.04 sec)
mysql>insert into tb_name values(2,'tom',19); #全字段插入
Query OK, 0 rows affected (0.04 sec)
mysql>insert into tb_name values(3,'albert',20),(4,'bander',19); #多行插入
Query OK, 0 rows affected (0.04 sec)
mysql>select * from tb_name; #全字段查询
+------+--------+------+
| id | name | age |
+------+--------+------+
| NULL | john | 18 |
| 2 | tom | 19 |
| 3 | albert | 20 |
| 4 | bander | 19 |
+------+--------+------+
4 rows in set (0.00 sec)
mysql>select name,age from tb_name;#指定字段查询
+--------+------+
| name | age |
+--------+------+
| john | 18 |
| tom | 19 |
| albert | 20 |
| bander | 19 |
+--------+------+
4 rows in set (0.00 sec)
mysql>select * from tb_name where age>=19; #带where的条件查询
+------+--------+------+
| id | name | age |
+------+--------+------+
| 2 | tom | 19 |
| 3 | albert | 20 |
| 4 | bander | 19 |
+------+--------+------+
3 rows in set (0.00 sec)
mysql>
表中数据插入,查询语句
inserter into tb_name(field_name)values(field_values); #指定字段插入
insert into tb_name values(all_values); #全字段插入
insert into tb_name values(values1),(values2)...; #多行插入
select * from tb_name; #全字段查询
select field_name from tb_name;#指定字段查询
select * from tb_name where condition; #带where的条件查询
表中数据修改、删除
updated 修改 与 delete 删除
mysql>update tb_name set age=21 where name='tom'; #修改满足条件的数据
Query OK, 1 rows affected (0.04 sec)
mysql>update tb_name set id=1,name='rose',age=23; #修改多个数据
Query OK, 4 rows affected (0.04 sec)
mysql> select * from tb_name;
+------+------+------+
| id | name | age |
+------+------+------+
| 1 | rose | 23 |
| 1 | rose | 23 |
| 1 | rose | 23 |
| 1 | rose | 23 |
+------+------+------+
4 rows in set (0.00 sec)
注意:修改数据时候,一定要使用where条件,否则会全表全改。
mysql> delete from tb_name where age=23; #删除满足条件的数据
Query OK, 1 rows affected (0.05 sec)
mysql> delete from tb_name ; #删除表的数据(全部)
Query OK, 3 rows affected (0.05 sec)
表中数据修改、删除语句:
update tb_name set field_values where conditions; #修改满足条件的数据
update tb_name set values1,values2,values3...; #修改多个数据
delete from tb_name where conditions; #删除满足条件的数据
delete from tb_name ; #删除表的数据(全部)
MySQL数值类型:
数值类型 | 特性 |
---|---|
tinyint | 用一个字节存放整数(0,255) |
smallint | 用两个字节(0,65535) |
mediumint | 三个字节(0,16777215) |
int | 四个字节(0,4294967295) |
bigint | 八个字节 |
Float(m,n) | 单精度浮点型(四个字节) |
double(m,n) | 双精度浮点数m总共个数,d小数位,(八个字节) |
MySQL字符类型:
字符类型 | 特性 |
---|---|
char(size) | 保存固定长度的字符串(包含字母数字以及特俗字符)。在括号中指定字符串长度,最多255个字符 |
varchar(size) | 保存可变长度的字符串(包含字母数字以及特俗字符)。在括号中指定字符串最大长度,最多255个字符,如果值的类型大于255,则被转换为text类型 |
tinytext/tinyblob | 用来存放较短文本数据/二进制数据,最大255 |
text/blob | 用来存放长文本数据/二进制数据,最大65535 |
longtext/longblob | 同上,区别在于最大存放4294967295 |
enum | enum数据类型实际上时包含多个固定值的列表,只能选择这些值,包括(null)例如:在某个字段包含'A','B'和'C'。必须这样定义:enum('A','B','C'),只有这些值和(null)可以填充到这个字段中。 |
MySQL的时间类型:
字符类型 | 特性 |
---|---|
date | 时间格式:2019-01-01 |
time | 时间格式:08:30:30 |
datetime | 日期时间格式:2019-01-10 08:30:30 |
timestamp | 自动存储日期修改的时间 |
year | 存放年 |
MySQL案列:
mysql> create table tb_name(
-> id int,
-> name varchar(20), #指定长度,最多65535个字符。 变长字符串
-> sex char(4), #指定长度,最多255个字符。 定长字符串
-> price double(4,2), #双精度浮点型,m总个数,d小数位
-> detail text, #可变长度,最多65535个字符
-> dates datetime, #日期时间类型 YYYY-MM-DD HH:MM:SS
-> ping enum('goog','bad') #枚举, 在给出的value中选择
-> );
Query OK, 0 rows affected (0.29 sec)