主要内容:
- MySQL安装
- 基本MySQL命令行操作
数据库知识
- 数据库(database):即容器——保存有组织的数据;
- 表(table):某种特定类型数据的结构化清单;
- 模式(schema):关于数据库和表的布局及特性的信息;
- 列(column):表中的一个字段,所有表都是由一个或者多个列组成的;
- 数据类型(datatype):所容许的数据的类型。每个表列都有相应的数据类型,它限制该列中存储的数据;
- 行(row):表中的一个记录;
- 主键(primary key):一列(或者一组列),其值能够唯一区分表中的每行;
- SQL(Structured Query Language):一种专门用来与数据库通信的结构化查询语言。
MySql数据类型
- 为每一列选择正确的数据类型是创建一个数据库首要考虑的问题;
- 数据类型确保提供的数据的正确性;
- 在排序或者比较数据时,需要知道数据的类型。如是时间类型还是数值型数据;
- 便于优化查询、节省磁盘空间。
MySQL共支持三种数据类型:
- Numeric
- Data & Time
- String
Numeric
整形(integers)
- tinyint
- smallint
- mediumint
- integer
- bigint
浮点型(floating points)
- float
- double
- decimal
Data & Time
- date
- time
- datetime
- year
- timestamp
timestamp格式总结:
String
- char
- varchar
- binary
- varbinary
- blob
- text
- enum
- set
安装MySQL
安装MySQL的方式有很多,比如通过安装包、二进制文件,或者从sources。在Linux操作系统上,我们可以很容易地使用 apt-get 命令进行安装。
$ sudo apt-get install mysql-server
该命令会自动进行MySQL以及相关包的安装。在安装过程中会提示你输入MySQL的root密码。安装好后,在shell中进入MySQL:
$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.16-0ubuntu0.16.04.1 (Ubuntu)
Copyright (c) 2000, 2016, 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>
这样就进入了MySQL!注意:我在-p后面省略了登录密码,接着在“Enter password”提示后面输入密码即可。
一般情况下,不建议使用MySQL的超级用户root,因为错误的操作会损坏我们的数据。只有在有需要的时候才使用root登录。所以,在进行操作之前最好是创建一个新用户,并赋予该新用户一定权限。
mysql> CREATE USER newuser@localhost IDENTIFIED BY '123';#创建新用户以及密码
mysql> GRANT ALL ON mydb.* to user12@localhost;#赋予新用户所有权利
其他基本命令:
- 清屏:
Ctrl+L
- 退出:
Ctrl+D or quit
- 帮助:
help
- 在MySQL中操作Linux命令:system+Linux命令
MySQL基本操作
检查数据库
- 查看数据库:
show databases;
- 创建数据库:
create database mydb;
- 选择数据库:
use mydb;
- 查看数据库中的表:
show tables;
- 查看表结构:
describe table;
- 删除表:
drop table table;
- 创建表:
create table table_name(column_name1 column_type1,column_name2 column_type2......,primary key(column_name));
- 清空表内容:
delete from mytable;/truncate table mytable;
查询、检索
- 检索单(多)个列:
select c1(,c2) from table;
- 检索所有列:
select * from table;
- 检索不同的行:
select distinct column from table;
- 限制输出结果:
select * from table limit 10;/select * from limit 15,5;
- 输出结果重定向:
mysql -uroot -p database -e 'select * from table' > file.txt
- 升(降)序排序数据:
select column from table order by column (desc);
- 过滤数据:
where、and、or、in、like、%、_、正则表达式
- 统计数据:
max()、min()、sum()、avg()、count()
- 分组数据:
group by
mysql> SELECT District, SUM(Population) FROM City
-> WHERE District = 'New York' GROUP BY District;
+----------+-----------------+
| District | SUM(Population) |
+----------+-----------------+
| New York | 8958085 |
+----------+-----------------+
1 row in set (0.00 sec)
# 处理group by的数据时,需要使用having代替where
更新、删除、插入数据
- 更新数据:
update
mysql> UPDATE Country SET HeadOfState = 'Donald Trump'
-> WHERE Name = 'United States';
# 更新美国总统为特朗普
- 临时表:
create temp_table engine=memory select * from fans_data limit 5;
- 删除表中指定数据:
delete from table where id in (1,2,3);
- 插入数据:
insert into table value('a'、'b'、'c');
- 修改数据:alter table
- 修改表名:
alter table old_table rename to new_table;
- 增加新列:
alter table my_table add new_column column_type;
- 增加主键:
alter table my_table add primary key (column_name);
- 修改列名:
alter table my_table change column old_columnname new_columnname column_type;
- 修改数据类型:
alter table my_table modify column column_name new_columntype;
- 删除某列:
alter table my_table drop column column_name;
- 插入数据:
insert into table_name(column1,column2) values(......),(......),(......);
- 替换掉某一行:
replace into table_name values(......);
- 从一个表中选择数据并插入到另一个表中:
insert into table1 select * from table2;