MySQL学习笔记-SELECT简单练习题

本文是学习尚硅谷-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
空值参与运算
  1. 空值:null
  2. 空值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

注意的点:

  1. 起别名,用双引号裹起来,并且与原名之间用空格分开
  2. 计算工资用到比率(可能为空值),用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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值