学习目标:
12天掌握SQL基础
学习内容:
1、 mysql 安装与基本命令 2、 SQL基础:查询与排序-select、运算符、聚合分组查询等 3、 SQL进阶:复杂查询方法-视图、子查询、函数等 4、 SQL进阶: 集合运算-表的加减法和join等学习时间:
1、周一至周五晚 7点-10点 2、周六早上 8点-11点 3、周日下午 3 点-下午 6 点学习产出:
技术笔记 4 篇
1 安装并配置mariadb
系统:Centos release 7.9.2009
软件版本:mariadb5.5.68
1.1 安装mariadb
$yum -y install mariadb mariadb-server
1.2 启动mysql
$systemctl start mariadb //启动
$systemctl enable mariadb //设置开机启动
$systemctl status mariadb
1.3 修改mysql初始密码
$mysql_secure_installation
//初次运行时提醒输入密码,直接回车。
提示是否设置root用户密码,选择Y
依次设置并确认密码
其他配置回车默认设置
1.4 测试登陆
$mysql -uroot -p
1.5 修改mysql默认语言
$cd /etc/my.inf ,并增加四条命令
在[mysqld]下添加
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
修改/etc/my.cnf.d/client.cnf
$vi /etc/my.cnf.d/client.cnf
在[client]中添加
default-character-set=utf8
修改文件/etc/my.cnf.d/mysql-clients.cnf
$vi /etc/my.cnf.d/mysql-clients.cnf
在[mysql]中添加
default-character-set=utf8
重启mariadb
$systemctl restart mariadb
1.6 进入mariadb界面,查看字符集修改效果(效果图)
$mysql -uroot -p
$mariadb> show variables like "%character%";show variables like "%collation%";
2 mysql的基本命令
命令介绍
DDL:数据定义语言
1. CREATE : 创建数据库和表等对象
2. DROP : 删除数据库和表等对象
3. ALTER : 修改数据库和表等对象的结构
DML:数据操纵语言(使用率90%)
1. SELECT :查询表中的数据
2. INSERT :向表中插入新数据
3. UPDATE :更新表中的数据
4. DELETE :删除表中的数据
DCL:数据控制语言
1. COMMIT : 确认对数据库中的数据进行的变更
2. ROLLBACK : 取消对数据库中的数据进行的变更
3. GRANT : 赋予用户操作权限
4. REVOKE : 取消用户的操作权限
2.1 数据库
创建数据库名为 product:
# create database product;
查看有哪些数据库:
# show databases;
2.2 表格的增删改
使用数据库并在数据库product下新建表格Addressbook:
#use product; //进入product数据库
#create table Addressbook(regist_no integer not null,name varchar(128) not null,address varchar(128) not null,tel_no char(10),mail_address char(20),PRIMARY KEY(regist_no));
删除表-使用数据定义语句
# drop table <表名>;
查看库中存在的表:
# show tables;
2.3 列的增删改
增加单个列:
# alter table Addressbook add column postal_code char(8) not null;
增加多个列:
# alter table Addressbook add column (postal_code char(8) not null,country char(20));
删除列:
# alter table Addressbook drop column country;
# alter table Addressbook drop column country;
* ALTER TABLE和DROP TABLE都是不可逆的。
2.4 数据增删改
针对部分插入数据–包含列清单:
#INSERT INTO Addressbook (regist_no, name, address, tel_no, mail_address) VALUES (0001, 'zhangsan', 'fuzhou', '1234567898','12696@qq.com');
针对全部列插入数据–省略列清单:
#INSERT INTO Addressbook VALUES (0001, 'zhangsan', 'fuzhou', '1234567898','12696@qq.com');
查询插入后的数据
清空表中数据并查看:
# truncate table <表名>;select * from <表名>;
* 使用truncate清除数据比deletefrom和drop更有效率
DB2/MYSQL/POSTGREDB/SQL插入多条数据:
#INSERT INTO Addressbook VALUES(0001,'zhangsan','fuzhou','1234567898','12696@qq.com'),(0002, 'zhangsan','fuzhou','1234567898','12696@qq.com'),(0003,'zhangsan','fuzhou','1234567898','12696@qq.com');
更新修改数据
# update <表名> set <列名1>=’value1’ where <列名3>=’value3’ ;
// 如果<列名3>=’value3’ 则修改<列名1>的值改为’value1’
# update <表名> set <列名1>=NULL where <列名3>=’value3’ ;
// 如果<列名3>=’value3’ 则修改<列名1>的值改为NULL(<列名1>必须允许NULL值)
# update <表名> set <列名1>=NULL, <列名2>=’value2’ where <列名3>=’value3’;
// 如果<列名3>=’value3’ 则修改<列名1>的值改为NULL,<列名2>的值改为value2
小结:
每个完整的命令后面以;
结尾。
多个命令合并可用都逗号隔开,例如update <table> set <column1>='',<column2>='';
alter table 和drop table的操作是不可逆的。