MySQL

数据库建立连接

  • 我们如果想要操作数据,需要先和数据建立一个连接,最直接的方式就是通过终端来连接;有两种方式来连接︰
  • 两种方式的区别在于输入密码是直接输入,还是另起一行以密文的形式输入;
  • 方式一:

mysql -uroot -p密码.

  • 方式二:

mysql -uroot -p
Enter password: your password

welcome to the MysQL monitor.Commands end with ; or lg.Your MysQL connection id is 12
Server version: 8.8.22 MysQL Community server - GPL
copyright © 2000,2020,Oracle and/or its affiliates. All rights reserved.oracle is a registered trademark of 0racle corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘lc’ to clear the current input statement.mysql>·

查看默认数据库

  • 我们说过,一个数据库软件中,可以包含很多个数据库,如何查看数据库
    show databases;
  • MySQL默认的数据库︰
    • infomation_schema:信息数据库,其中包括MySQL在维护的其他数据库、表.列、访问权限等信息;
    • performance_schema:性能数据库,记录着MySQL Server数据库引擎在运行过程中的一些资源消耗相关的信息﹔
    • mysql :用于存储数据库管理者的用户信息、权限信息以及一些日志信息等;
    • sys:相当于是一个简易版的performance_schema,将性能数据库中的数据汇总成更容易理解的形式;

常用命令

create database 数据库名称;
select database(); 查看当前正在使用的数据库;
user 数据库名称; 切换使用的数据库
show table;查看当前库下面的表
create table 表名;创建表

创建表

  • 在终端直接创建一个属于自己的新的数据库coderhub(一般情况下一个新的项目会对应一个新的数据库)。

    • create database coderhub;
  • 使用我们创建的数据库coderhub :

    • use coderhub;
  • 在数据中,创建一张表:

    • create table user(
      name 'varchar(20),age int,
      height double);
  • 插入数据

    • insert into user (name,age,height) values ( ’ why’ , 18,1.88);
    • insert into user (name,age,height) values ( ’ kobe’, 40,1.98);

SQL语句

1.了解
  • 1我们希望操作数据库(特别是在程序中),就需要有和数据库沟通的语言,这个语言就是SQL
    • SQL是Structured Query Language,称之为结构化查询语言,简称SQL;
    • 使用SQL编写出来的语句,就称之为SQL语句;
    • SQL语句可以用于对数据库进行操作;
  • 事实上,常见的关系型数据库SQL语句都是比较相似的,所以你学会了MySQL中的SQL语句,之后去操作比如Oracle或者其他关系型数据库,也是非常方便的。
  • SQL语句的常用规范︰
    • 通常关键字是大写的,比如CREATE、TABLE、SHOW等等;
    • 一条语句结束后,需要以;结尾;
    • 如果遇到关键字作为表明或者字段名称,可以使用``包裹;
2.SQl分类

常见的SQL语句我们可以分成四类:

  • DDL ( Data Definition Language ) :数据定义语言;
    • 可以通过DDL语句对数据库或者表进行︰创建、删除、修改等操作;
  • DML ( Data Manipulation Language ):数据操作语言;
    • 可以通过DML语句对表进行︰添加、删除、修改等操作;
  • DQL ( Data Query Language )︰数据查询语言;
    • 可以通过DQL从数据库中查询记录;(重点)
  • DCL ( Data Control Language )︰数据控制语言;对数据库、表格的权限进行相关访问控制操作;

数字类型

MySQL的数字类型有很多︰
整数数字类型:INTEGER,INT (常用),SMALLINT,TINYINT,MEDIUMINT,BIGINT (常用);
精确数字类型:DECIMAL,NUMERIC ( DECIMAL是NUMERIC的实现形式);
浮点数字类型:FLOAT,DOUBLE ( FLOAT是4个字节,DOUBLE是8个字节);

时间类型

MySQL的日期类型也很多∶

  • YEAR以YYYY格式显示值范围1901到2155,和0000。
  • DATE类型用于具有曰期部分但没有时间部分的值︰
    • DATE以格式YYYY-MM-DD显示值﹔
    • 支持的范围是‘1000-01-01’到/ ‘9999-12-31’;
  • DATETIME类型用于包含日期和时间部分的值:
    • DATETIME以格式’YYYY-MM-DD hh:mm:ss’显示值;
    • 支持的范围是1000-01-O1 00:00:00到9999-12-31 23:59:59;
  • (常用)TIMESTAMP数据类型被用于同时包含日期和时间部分的值∶
    • TIMESTAMP以格式’YYYY-MM-DD hh:mm:ss’显示值;
    • 但是它的范围是UTC的时间范围∶’1970-01-01 00:00:01’到/'2038-01-19 03:14:07;

字符串

MySQL的字符串类型表示方式如下:

  • CHAR类型在创建表时为固定长度,长度可以是0到255之间的任何值;
    • 在被查询时,会删除后面的空格﹔
      -(常用) VARCHAR类型的值是可变长度的字符串,长度可以指定为0到65535之间的值;
    • 在被查询时,不会删除后面的空格;
  • BINARY和VARBINARY类型用于存储二进制字符串,存储的是字节字符串;
  • BLOB用于存储大的二进制类型;
  • TEXT用于存储大的字符串类型;

表约束

主键:PRIMARY KEY

  • 一张表中,我们为了区分每一条记录的唯一性,必须有一个字段是永远不会重复,并且不会为空的,这个字段我们通常会将它设置为主键:
    • 主键是表中唯一的索引;
    • 并且必须是NOT NULL的,如果没有设置NOT NULL,那么MySQL也会隐式的设置为NOT NUL
    • 主键也可以是多列索引,PRIMARY KEY(key_part,…),我们一般称之为联合主键﹔
      建议∶开发中主键字段应该是和业务无关的,尽量不要使用业务字段来作为主键﹔

唯一:UNIQUE

  • 某些字段在开发中我们希望是唯一的,不会重复的,比如手机号码、身份证号码等,这个字段我们可以使用UNIQUE来约束︰
  • 使用UNIQUE约束的字段在表中必须是不同的;
  • 对于所有引擎,UNIQUE索引允许NULL包含的列具有多个值NULL。

不能为空:NOT NULL

  • 某些字段我们要求用户必须插入值,不可以为空,这个时候我们可以使用NOT NULL来约束;
  • 默认值:DEFAULT
    某些字段我们希望在没有设置值时给予一个默认值,这个时候我们可以使用DEFAULT来完成;
  • 自动递增:AUTO_INCREMENT(一般用于数字类型)
    某些字段我们希望不设置值时可以进行递增,比如用户的id,这个时候可以使用AUTO_INCREMENT来完成;
#完整创建表的语法
CREATE TABLE IF NOT EXISTS `users`(
id INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
`age` INT DEFAULT 0,
`phoneNum` VARCHAR(20) UNIQUE DEFAULT '',
`createTime` TIMESTAMP
);


# 修改表
#1.修改表名字
ALTER TABLE `users` RENAME TO `user`;
#2.添加一个新的列
ALTER TABLE `user` ADD `updataTime` TIMESTAMP;
#3.修改字段名称
ALTER TABLE `user` CHANGE `tephone` `telphone` VARCHAR(20);
#4.修改字段类型
ALTER TABLE `user` MODIFY `name` VARCHAR(30);
#5.删除某一个字段
ALTER TABLE `user` DROP `age`;


#根据一个表结构创建另外一个表
CREATE TABLE `users` LIKE `user`;
#根据一个表中的内容创建另外一个表
CREATE TABLE user2 AS (SELECT *from `users`)
对数据库增删改查
#操作表
INSERT INTO `user` VALUES (100,'李四','020-2741126','2021-4-15','2021-4-15');

INSERT INTO `user`(name,telphone,createTime,updataTime)
VALUES('张三','12345678','2021-4-15','2021-4-16');

INSERT INTO `user`(name,telphone)
VALUES('王五','123456789');

# 需求 craeteTime和updataTime可以自动设置值
# 插入数据和时间默认值
ALTER TABLE `user` MODIFY `createTime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
ALTER TABLE `user` MODIFY `updataTime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE                                       CURRENT_TIMESTAMP;

INSERT INTO `user`(name,telphone)
VALUES('tom','12456')

INSERT INTO `user`(name,telphone)
VALUES('ros','124567')



# 删除数据
# 删除所有数据
DELETE FROM `user`;
#删除符合条件的数据
DELETE FROM `user` WHERE id = 100;
#更新数据
#更新所有数据
UPDATE user SET name = 'lili',telphone='123321'; 
#更新对应数据
UPDATE user SET name='tom',telphone='123456654322' WHERE id = 102;

数据查询语句
#创建表
CREATE TABLE IF NOT EXISTS `products`(
   id INT AUTO_INCREMENT PRIMARY key,
	 brand VARCHAR(20),
	 title VARCHAR(20) NOT NULL,
	 price DOUBLE NOT NULL,
	 score DECIMAL(2,1),
   voteCnt INT,
	 url VARCHAR(100),
	 pid INT
);

# 基本查询
#查询表中多有的字段和数据
SELECT * FROM  `products`;
# 查询指定字段
SELECT title,price FROM `products`;
# 对字段结果起别名
SELECT title as phoneTiele,price as currentPrice FROM `products`;

#where条件
# 条件判断语句
#查询价格小于3000的手机
SELECT * FROM `products` WHERE price<3000;
#价格等于3598的手机
SELECT *FROM products WHERE price =3598;
#价格不等于3598的手机
SELECT *FROM `products` WHERE price !=3598;
SELECT *FROM `products` WHERE price <>3598;
#所有华为手机
SELECT * FROM `products` WHERE brand ='华为';

#逻辑语句
SELECT * FROM `products` WHERE price>3000 AND price<4000;
SELECT * FROM `products` WHERE price>3000 && price<4000;
#包含等于
SELECT * FROM `products` WHERE price BETWEEN 3000 AND 4000;

#查询价格在四千以上或者华为手机
SELECT *FROM `products` WHERE price>4000 || brand='华为';

#模糊查询
# 任意个
SELECT * FROM `products` WHERE title LIKE '%华%';
#第二个为华
SELECT * FROM `products` WHERE title LIKE '_华%';


#IN表示多个值选取
SELECT * FROM `products` where brand IN('华为','oppo');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值