MySQL--基础一

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)

你可能感兴趣的:(MySQL--基础一)