本文是学习尚硅谷-MySQL的笔记,如果想深入学习请移步b站
创建表和数据库,查看字符级别
-
查看版本(version)
#此时还没有登录mysql C:\Users\lenovo>mysql --version mysql Ver 8.0.27 for Win64 on x86_64 (MySQL Community Server - GPL)
-
登录mysql
mysql -u [用户名] -p [密码]
- 查看一下数据库(注意命令的结尾是以分号进行结尾的)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
#上面的都是安装MySQL的时候default的数据库
- 创建一个数据库dbtest1
mysql> create database dbtest1;
Query OK, 1 row affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| dbtest1 |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.01 sec)
- 创建一张表(创建的时候需要指明创建在哪一个数据库中)
use dbtest1 #创建在dbtest1这个数据库中
mysql> create table employees(id int,name varchar(15));
Query OK, 0 rows affected (0.06 sec)
上面创建的表属于dbtest1 名字叫employees 存储的数据有int型的ID 和 字符创型的name
- 查看一下tables
mysql> show tables;
+-------------------+
| Tables_in_dbtest1 |
+-------------------+
| employees |
+-------------------+
1 row in set (0.00 sec)
- 向表中插入数据
insert into employees values(1000,'tom');
insert into employees values(1001,'xb');
insert into employees values(1003,'杰瑞');
- 查看表中的数据
mysql> select * from employees;
+------+------+
| id | name |
+------+------+
| 1000 | tom |
| 1001 | xb |
| 1003 | 杰瑞 |
+------+------+
3 rows in set (0.03 sec)
- 查看表的创建信息
show create table 【tablename】;
- 查看字符集
mysql> show variables like 'character_%';
+--------------------------+-------------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | utf8mb4 |
| character_set_system | utf8mb3 |
| character_sets_dir | F:\MySQL-install-80\Mem-install\share\charsets\ |
+--------------------------+-------------------------------------------------+
8 rows in set, 1 warning (0.00 sec)
-
删除数据库
drop database dbtest1
MySQL中的编码问题
如果使用的是5.几版本的mysql在创建数据的时候是不能够插入中文的,因为编码格式默认为是拉丁而不是utf-8
1.查看编码命令
show variables like 'character_%'
show variables like 'collation_%'
2.修改mysql中的数据目录下的my.ini配置文件
在[mysql]下面添加
default-character-set=utf8
在[mysqld]下面添加
character-set-server=utf8
collation-server=utf8_general_ci
修改完配置文件后默认的字符编码就是utf-8了
数据导入指令
在命令行下执行:mysql> source d:\mysqldb.sql
回将目标文件(数据文件)导入到sql中
基本的SELECT语句
select [] from []
1.查找employees中所有的字段
SELECT * from employees
2.查找employees中所有的id字段
SELECT id from employees
3.查找employees中的id和姓名字段
SELECT id,'anme' from employees
列的别名
SELECT employee_id,last_name, department_id
from employees;
#当我们根据上述列名(用逗号分隔开)进行查询的时候,最终会得到resultset(结果集)
#如果想要在显示的时候显示的是其他的名字,可以用别名(alias)
SELECT employee_id "emid", last_name "lname", department_id "d_id"
from employees;
#基本规格就是SELECE old_name AS "alias" from employees;
其中 1. AS可以不加,但是old_name和alias之间必须有一个空格
2.建议别名用双引号包裹起来,便于包含空格等
去除重复行
#需求:查看所有的部门id,肯定是不能够重复显示
SELECT DISTINCT department_id ##DISTINCT关键字:就是去重的关键字
FROM employees
空值参与运算
- 空值:null
- 空值null并不等同于数值0
#将员工id、月工资、年工资利用别名列出来
#null值参与运算:
SELECT employee_id, salary "月工资", salary * (1 + commission_pct) * 12 "年工资"
FROM employees;
#这样的话,如果你的commission_pct是null 那么对应的数值就是null ,就是如果null参与了运算,值就为null
#我们可以用函数 IFNULL进行判断是否为空,为空设置为我们想要的数
SELECT employee_id, salary "月工资", salary * (1 + IFNULL(commission_pct),0) * 12 "年工资"
FROM employees; #这样的话,如果comm..为null会自动替换为0
着重符号
#如果你的表名或者字段和关键字重复了那么就需要用``包起来表名这是一个字段或者是表名
SELECT * from 'order' #我们假设你有一个表名为order
显示表的结构
DESCRIBE table_name
显示了表中各个字段的详细内容
下面字段解释来源于尚硅谷课件
其中,各个字段的含义分别解释如下:
- Field:表示字段名称。
- Type:表示字段类型,这里 barcode、goodsname 是文本型的,price 是整数类型的。
- Null:表示该列是否可以存储NULL值。
- Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。
- Default:表示该列是否有默认值,如果有,那么值是多少。
- Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。
过滤信息
如果在所有的信息中,我只想要查找指定的部门信息或或者是指定的人的信息怎么办呢?可以用WHERE进行过滤查找
直接上例子:
#查找部门编号为33的部门的所有的信息
SELECT *
from employees
WHERE department_id = 90;
#查找first_name为Fay的所有员工的信息
SELECT *
from employees
WHERE first_name = 'Fay';
SELECT 查询练习
查询员工12个月的工资总和,并且起别名为ANNUAL SALARY
注意的点:
- 起别名,用双引号裹起来,并且与原名之间用空格分开
- 计算工资用到比率(可能为空值),用IFNULL进行控制
SELECT employee_id, last_name, first_name, salary * 12 * ( 1 + IFNULL(commission_pct,0)) "ANNUAL SALARY"
FROM employees
查询去重后的job-id
SELECT DISTINCT job_id
FROM employees
查询工资大于12000的员工的姓名和工资
SELECT first_name, salary
FROM employees
WHERE salary > 12000;
查询员工号为155的员工姓名和部门号
SELECT last_name, department_id
FROM employees
WHERE employee_id = 155;
显示部门信息的结构和全部的信息
DESCRIBE departments;
SELECT *
FROM departments;