MySQL

目录

1 数据库原理

2 MySQL安装和基本使用

3 系统数据库

4 数据库基本操作     

5 MySQL数据类型

 6 MySQL表操作

7 数据操作 DML


1 数据库原理


1.1 数据的分类
结构化的数据:即有固定格式和有限长度的数据。例如填的表格就是结构化的数据,国籍:中华人
民共和国,民族:汉,性别:男,这都叫结构化数据
非结构化的数据:非结构化的数据越来越多,就是不定长、无固定格式的数据,例如: 网页,图片文
件,有时候非常大,有时候很小;例如语音,视频都是非结构化的数据
半结构化数据:比如:XML或者HTML的格式的数据
1.2 数据库的发展史
数据库与芯片,操作系统并列为计算机技术的三大件,也是企业IT系统必不可少的核心技术
1.2.1 数据库系统发展阶段
萌芽阶段:文件系统
使用磁盘文件来存储数据
初级阶段:第一代数据库
出现了网状模型、层次模型的数据库
中级阶段:第二代数据库
关系型数据库和结构化查询语言
高级阶段:新一代数据库
"关系-对象"型数据库
1.2.2 文件管理系统的缺点
编写应用程序不方便
不支持对文件的并发访问
无安全控制功能
难以按用户视图表示数据
数据间联系弱
数据冗余不可避免
应用程序依赖性
1.3 数据库管理系统
1.3.1 相关概念
Database:数据库是数据的汇集,它以一定的组织形式存于存储介质上
DBMS:Database Management System, 是管理数据库的系统软件,它实现数据库系统的各种功
能。是数据库系统的核心
DBA:Database Administrator, 负责数据库的规划、设计、协调、维护和管理等工作
Application:应用程序,指以数据库为基础的应用程序
1.3.2 数据库管理系统的优点
程序与数据相互独立
保证数据的安全、可靠
最大限度地保证数据的正确性
数据可以并发使用并能同时保证一致性
相互关联的数据的集合
较少的数据冗余
1.3.3 数据库管理系统的基本功能
数据定义
数据处理
数据安全
数据备份
1.3.4 各种数据库管理系统

1.3.4.1 层次数据库

分层结构由IBM在20世纪60年代开发,并在早期大型机DBMS中使用。记录的关系形成了一个树状模
型。这种结构简单,但缺乏灵活性,因为这种关系仅限于一对多关系。
代表数据库:IBM IMS(信息管理系统)

1.3.4.2 网状数据库

1.3.4.3 关系型数据库 RDBMS
Relational Database Management System,关系模型最初由IBM公司的英国计算机科学家埃德加·科德
(Edgar F. Codd)于1969年描述
1974年,IBM开始开发系统R,这是一个开发RDBMS原型的研究项目。
然而,第一个商业上可用的RDBMS是甲骨文,于1979年由关系软件(现为甲骨文oracle公司)发布 

1.3.4.3.1 关系统型数据库相关概念
        关系Relational :关系就是二维表,其中:表中的行、列次序并不重要
        行row:表中的每一行,又称为一条记录record
        列column:表中的每一列,称为属性,字段,域field
        主键Primary key:PK ,一个或多个字段的组合, 用于惟一确定一个记录的字段,一张表只有一个主键, 主键字段不能为空NULL
        唯一键Unique key: 一个或多个字段的组合,用于惟一确定一个记录的字段,一张表可以有多个UK,而且UK字段可以为NULL
        域domain:属性的取值范围,如,性别只能是'男'和'女'两个值,人类的年龄只能0-150
1.3.4.3.2 常用关系数据库
        MySQL: MySQL, MariaDB, Percona Server
        PostgreSQL: 简称为pgsql,EnterpriseDB
        Oracle
        MSSQL Server
        DB2

1.4.数据的操作

开发工程师 CRUD (增加Create、查询Read或 Retrieve、更新Update、 删除Delete)
        数据提取:在数据集合中提取感兴趣的内容。SELECT
        数据更新:变更数据库中的数据。INSERT、DELETE、UPDATE

1.4.1数据库的正规化分析
        数据库规范化,又称数据库或资料库的正规化、标准化,是数据库设计中的一系列原理和技术,以减少数据库中数据冗余,增进数据的一致性。关系模型的发明者埃德加·科德最早提出这一概念,并于1970年代初定义了第一范式、第二范式和第三范式的概念
        设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,不同的规范要求被称为不同范式,各种范式呈递次规范,越高的范式数据库冗余越小
        目前关系数据库有六种范式:

                第一范式(1NF)、

                第二范式(2NF)、

                第三范式(3NF)、

                巴德斯科范式(BCNF)、

                第四范式(4NF)

                第五范式(5NF,又称完美范式)。

        满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般数据库只需满足第三范式(3NF)即可规则是死的,人是活的,所以范式是否必须遵守,要看业务需要而定掌握范式的目的是为了在合适的场景下违反范式
1.4.1.1 第一范式:1NF
        无重复的列,每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,确保每一列的原子性。除去同类型的字段,就是无重复的列
        说明:第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库
1.4.1.2 第二范式:2NF
        第二范式必须先满足第一范式,属性完全依赖于主键,要求表中的每个行必须可以被唯一地区分,通常为表加上每行的唯一标识主键PK,非PK的字段需要与整个PK有直接相关性,即非PK的字段不能依赖于部分主键

        

1.4.1.3 第三范式:3NF
        满足第三范式必须先满足第二范式属性,非主键属性不依赖于其它非主键属性。第三范式要求一个数据表中不包含已在其它表中已包含的非主关键字信息,非PK的字段间不能有从属关系
1.4.5 SQL 结构化查询语言简介
        SQL:Structure Query Language,结构化查询语言是1974年由Boyce和Chamberlin提出的一个通用的、功能极强的关系性数据库语言
        SQL解释器:将SQL语句解释成机器语言
        数据存储协议:应用层协议,C/S
                S:server, 监听于套接字,接收并处理客户端的应用请求
                C:Client
        客户端程序接口
                CLI
                GUI
        应用编程接口
                ODBC:Open Database Connectivity
                JDBC:Java Data Base Connectivity

        

 
 

SQL (Structured Query Language 及结构化查询语言)

SQL 语言主要用于存取数据,查询数据,更新数据和管理关系型数据库系统

DDL 数据库定义语言:数据库,表,试图,索引,存储过程,例如CREATE DROP ALTER DML 数据库操纵语言:插入数据INSERT,删除数据DELETE,更新数据UPDATE

DCL 数据库控制语言:控制用户的访问权限GRANT,REVOKE

DQL 数据库查询语言:查询数据SELECT

2 MySQL安装和基本使用

MySQL 的三大主要分支
        MySQL
        Mariadb
        Percona Server

官方网址:

        https://www.mysql.com/
        http://mariadb.org/
        https://www.percona.com

官方文档:

        https://dev.mysql.com/doc/
        https://mariadb.com/kb/en/ 
        https://www.percona.com/software/mysql-database/percona-server

安装方式介绍:
     程序包管理器管理的程序包

         二进制rpm包安装     yum  repository   mysql80-community-release-el7-7.noarch.rpm
     源代码编译安装

centos7中查看mariadb是否安装
[root@localhost ~]#rpm -q mariadb-server
package mariadb-server is not installed

关闭selinux
[root@localhost ~]#sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config

关闭防火墙,或者无需关闭防火墙,在服务安装完成之后添加服务端口
[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#systemctl disable firewalld


下载rpm包
[root@localhost ~]#wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
[root@localhost ~]#ls
anaconda-ks.cfg  mysql80-community-release-el7-7.noarch.rpm

[root@localhost ~]#rpm -ivh mysql80-community-release-el7-7.noarch.rpm

[root@localhost ~]#ls /etc/yum.repos.d/
mysql-community-debuginfo.repo  mysql-community-source.repo  mysql-community.repo

更新仓库
[root@localhost ~]#yum makecache

查看yum仓库:
[root@localhost ~]#yum repolist

md5值与官网的md5值对照没有错误
[root@localhost ~]#md5sum mysql80-community-release-el7-7.noarch.rpm

查找server安装包
[root@localhost ~]#yum list | grep mysql-community-server

安装:
[root@localhost ~]#yum -y install mysql-community-server

启动服务:
[root@localhost ~]#systemctl enable --now mysqld
[root@localhost ~]#systemctl status mysqld

查看服务相关文件:
[root@localhost ~]#ls /var/lib/mysql

查看初始密码:
[root@localhost ~]#tail /var/log/mysqld.log | grep password

登录
mysql -uroot -p'password'
mysql> alter user root@'localhost' identified by '复杂密码';
mysql> flush privileges;




二进制格式的程序包:展开至特定路径,并经过简单配置后即可使用

二进制 预编译       generic            (mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz)
 

centos7中查看mariadb是否安装
[root@localhost /usr/local/src]#rpm -q mariadb-server
package mariadb-server is not installed

查看系统glibc是否与mysql官网要求的glibc版本匹配
[root@localhost ~]#rpm -q glibc


上传安装包
[root@localhost ~]#cd /usr/local/src
[root@localhost /usr/local/src]#ls
mysql-8.0.32-linux-glibc2.17-x86_64-minimal.tar.xz


创建用户和组
[root@localhost ~]#groupadd mysql
[root@localhost ~]#useradd -r -g mysql -s /bin/false mysql

指定解压目录并解压
[root@localhost ~]#tar -xvf mysql-test-8.0.32-linux-glibc2.12-x86_64.tar.xz -C /usr/local/

查看解压结果是否正确
[root@localhost ~]#ls /usr/local/

创建软连接
[root@localhost ~]#cd /usr/local
[root@localhost /usr/local]#ln -s mysql-8.0.32-linux-glibc2.12-x86_64 mysql

初始化
[root@localhost /usr/local]#cd mysql
[root@localhost /usr/local/mysql]#mkdir data
[root@localhost /usr/local/mysql]#chown -R mysql.mysql /usr/local/mysql/


创建配置文件
[root@localhost /usr/local/mysql]#cp /etc/my.cnf /etc/my.cnf.bak
[root@localhost /usr/local/mysql]#cat /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
character_set_server=utf8
#lower_case_table_name=1
log-error=/usr/local/mysql/data/mysql.log
pid-file=/usr/local/mysql/data/mysql.pid

初始化之后记录临时密码,此版本安装之后,在配置文件指定的log中查看临时密码
[root@localhost /usr/local/mysql]#./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data


将mysql加入到可控制启动服务的文件夹内,并命名mysql(service可控制的服务名):
目的:可用 service mysql start命令来控制启动 mysql
[root@localhost /usr/local/mysql]#cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost /usr/local/mysql]#chkconfig --add mysqld

配置环境变量:
[root@localhost /usr/local/mysql]# cat /etc/profile
最后加入
export MYSQL_HOME="/usr/local/mysql"
export PATH="$PATH:$MYSQL_HOME/bin"
[root@localhost /usr/local/mysql]#source /etc/profile

查看mysql.log日志文件中临时密码登录mysql

登录之后更改密码:
mysql> alter user root@'localhost' identified by '复杂密码';
mysql> flush privileges;
或者
[root@localhost /usr/local/mysql]#mysqladmin -uroot -p'临时密码' password '复杂密码'



       

 源码包编译安装     source code      (mysql-community-8.0.33-1.el7.src.rpm)

  

centos7中查看mariadb是否安装
[root@localhost ~]# rpm -q mariadb-server
package mariadb-server is not installed

安装依赖包
[root@localhost ~]# yum -y install gcc gcc-c++  bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel  ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel perl-Data-Dumper




因为数据库8.x版本原因,安装环境要求centos7.x环境下,cmake默认版本太低(至少cmake-3.5.1)

[root@localhost ~]# yum -y remove cmake
cmake下载地址:https://cmake.org/download/

[root@localhost ~]# cd /usr/local/src
[root@localhost ~]#wget https://cmake.org/files/v3.21/cmake-3.21.7.tar.gz
[root@localhost ~]#tar zxvf cmake-3.21.7.tar.gz
[root@localhost ~]#cd cmake-3.21.7
[root@localhost cmake-3.21.7]# ./bootstrap
[root@localhost cmake-3.21.7]# gmake && gmake install
[root@localhost cmake-3.21.7]# which cmake
[root@localhost cmake-3.21.7]# /usr/local/bin/cmake  --version
cmake version 3.21.7

[root@localhost cmake-3.21.7]# ln -s /usr/local/bin/cmake /usr/bin/
[root@localhost cmake-3.21.7]#cmake --version

因为数据库8.x版本原因,安装环境要求:gcc5.3及以上版本

[root@localhost ~]# gcc -v

安装scl源
[root@localhost ~]# yum install centos-release-scl -y

列出scl有哪些源可以用
[root@localhost ~]# yum list|grep gcc
[root@localhost ~]# yum install devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils
[root@localhost ~]# scl enable devtoolset-10 bash
[root@localhost ~]# gcc -v






创建用户和组
[root@localhost ~]#groupadd mysql
[root@localhost ~]#useradd -r -g mysql -s /bin/false mysql





上传安装并解压
[root@localhost src]# pwd
/usr/local/src
[root@localhost src]#wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-8.0.32.tar.gz

[root@localhost src]#ls
mysql-boost-8.0.32.tar.gz

[root@localhost src]#tar -xf mysql-boost-8.0.32.tar.gz -C /usr/local/
[root@localhost src]# cd ../
[root@localhost local]# ls
bin  etc  games  include  lib  lib64  libexec  mysql-8.0.32  sbin  share  src
[root@localhost local]# mv mysql-8.0.32 mysql
[root@localhost /usr/local]#chown -R mysql.mysql mysql
[root@host-192-168-3-15 local]# cd mysql



[root@localhost mysql-8.0.26]# cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql8.0.26 \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \    ##静态编译存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \    ##关闭调试
-DWITH_READLINE=1 \
-DWITH_SSL=system \   ##支持加密连接,'system'表示使用系统SSL库,或者指定路径
-DWITH_ZLIB=system \  ##压缩库
-DWITH_LIBWRAP=0 \    ##是否包括对网络语言(TCP 包装器)的支持
-DENABLED_LOCAL_INFILE=1 \   ## 是否启用本地加载数据
-DMYSQL_UNIX_ADDR=/data/mysql.sock \  ##服务器监听套接字连接路径,默认'/tmp/mysql.sock'
-DCMAKE_C_COMPILER=/usr/bin/gcc \
-DCMAKE_CXX_COMPILER=/usr/bin/g++ \
-DFORCE_INSOURCE_BUILD=1 \
-DDOWNLOAD_BOOST=1 \    ##开启BOOST下载
-DWITH_BOOST=/usr/src   ##BOOST下载保存路径




cmake .\
-DDOWNLOAD_BOOST=1  \
-DWITH_BOOST=/opt/mysql-8.0.32/boost/ \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-8.0.32 \
-DMYSQL_DATADIR=/data/mysql \
-DWITHOUT_CSV_STORAGE_ENGINE=1 \
-DWITHOUT_BLACKHOLD_STORAGE_ENGINE=1 \
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1 \
-DWITHOUT_ARCHIVE_STORAGE_ENGINE=1 \
-DWITHOUT_MRG_MYISAM_STORAGE_ENGINE=1 \
-DWITHOUT_NDBCLUSTER_STORAGE_ENGINE=1 \
-DFORCE_INSOURCE_BUILD=1 \
-DCMAKE_CXX_COMPILER=/usr/local/bin/g++ \
-DCMAKE_C_COMPILER=/usr/local/bin/gcc \
-DWITHOUT_BLACKHOLD_STORAGE_ENGINE=1 \
-DWITHOUT_MRG_MYISAM_STORAGE_ENGINE=1 \
-DWITHOUT_NDBCLUSTER_STORAGE_ENGINE=1



make && makei install

      

2.1mysql忘记passwd

 1,在配置文件中添加参数       

添加跳过授权表参数echo 'skip-grant-tables' >> /etc/my.cnf

重启服务:
systemctl restart mysqld

登录mysql
[root@app1 ~]#mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.42 MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

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> desc mysql.user;
取出此项参数:authentication_string


mysql> select user,host,authentication_string from mysql.user;
+---------------+-----------+-------------------------------------------+
| user          | host      | authentication_string                     |
+---------------+-----------+-------------------------------------------+
| root          | %         | *EE44F9E045D12C1E74E141C49C580F0F95548B52 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+---------------+-----------+-------------------------------------------+
3 rows in set (0.00 sec)


更改密码:
mysql> update mysql.user set authentication_string=password('新密码') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> \q

退出之后删除配置文件中追加的参数之后重启服务:systemctl restart mysqld




2 mysql登陆报错

1 可在数据库配置文件中指定socket路径

在配置文件中添加客户端socket路径

[client]
socket=/var/lib/mysql/mysql.sock

重启服务
systemctl restart mysqld


2 在登陆时指定socket路径
mysql -uroot -ppasswd -S /var/lib/mysql/mysql.sock

   2.2 mysql数据库的基本操作     

1 SQL语言

(Structured Query Language)是用于与数据库进行交互的标准语言。SQL 语言可以分为以下几个主要分类:

  1. 数据定义语言(Data Definition Language,DDL):DDL 用于定义和管理数据库中的结构,包括创建、修改和删除数据库、表、视图、索引等对象。常见的 DDL 命令包括 CREATE、ALTER 和 DROP。    DDL语句用于定义和管理数据库、表、索引、视图、存储过程和函数等数据库对象的结构和属性。通过使用这些语句,您可以创建、修改和删除数据库对象,以满足特定的数据存储和查询需求。

  2. 数据查询语言(Data Query Language,DQL):DQL 用于从数据库中检索数据,它是 SQL 中最常用的部分。常见的 DQL 命令是 SELECT,用于从表中选择特定的数据行和列。

  3. 数据操纵语言(Data Manipulation Language,DML):DML 用于向数据库中插入、更新和删除数据。常见的 DML 命令包括 INSERT、UPDATE 和 DELETE。

  4. 数据控制语言(Data Control Language,DCL):DCL 用于管理数据库的访问权限和安全性。它包括授权用户、回收权限和修改用户密码等命令。常见的 DCL 命令有 GRANT、REVOKE 和 ALTER USER。

  5. 事务控制语言(Transaction Control Language,TCL):TCL 用于管理数据库中的事务,包括事务的提交和回滚。常见的 TCL 命令是 COMMIT 和 ROLLBACK。

这些 SQL 语言分类提供了丰富的功能,使得开发人员可以通过 SQL 语句与数据库进行交互、管理和操作数据。

3 系统数据库

MySQL 中的系统数据库主要包括以下几个:

  1. mysql:这是MySQL的主要系统数据库,存储了用户、权限、变量配置等信息。它包含了用于管理和控制MySQL服务器的系统表。授权库,主要存储系统用户的授权信息。

  2. information_schema:这是一个虚拟数据库,不存储实际的数据,而是提供了访问和查询关于数据库、表、列、索引等元数据信息的视图。它可以用于获取数据库结构和统计信息。

  3. performance_schema:这个数据库用于收集和存储MySQL服务器的性能相关数据,如查询执行时间、锁等待情况、线程活动等。它提供了一组视图和表,可以用于性能分析和优化。

  4. sys:这是一个可选的系统数据库,提供了一组存储过程和视图,用于简化和增强对MySQL服务器的监控和诊断。它建立在performance_schema之上,提供了更高级的查询和分析功能。主要存储数据库服务器的性能参数。

这些系统数据库在MySQL中起到不同的作用,主要用于管理用户、权限、配置信息,提供数据库元数据和性能统计数据,以及辅助监控和诊断MySQL服务器。它们是MySQL的核心组成部分,对于数据库管理员和开发人员来说非常重要。

information_schema :虚拟库,主要存储系统中的一些数据库对象的信息,如用户表信息,列信息,权限信息,字符信息等
performance_schema :主要存储数据库服务器的性能参数
mysql :授权库,主要存储系统用户的权限信息
sys:主要存储数据库服务器的性能参数


创建需要的业务数据库....

# 帮助信息
mysql> \h

For information about MySQL products and services, visit:
   http://www.mysql.com/
For developer information, including the MySQL Reference Manual, visit:
   http://dev.mysql.com/
To buy MySQL Enterprise support, training, or other products, visit:
   https://shop.mysql.com/

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
clear     (\c) Clear the current input statement.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit      (\e) Edit command with $EDITOR.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
nopager   (\n) Disable pager, print to stdout.
notee     (\t) Don't write into outfile.
pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print     (\p) Print current command.
prompt    (\R) Change your mysql prompt.
quit      (\q) Quit mysql.
rehash    (\#) Rebuild completion hash.
source    (\.) Execute an SQL script file. Takes a file name as an argument.
status    (\s) Get status information from the server.
system    (\!) Execute a system shell command.
tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.
use       (\u) Use another database. Takes database name as argument.
charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
resetconnection(\x) Clean session context.
query_attributes Sets string parameters (name1 value1 name2 value2 ...) for the next query to pick up.
ssl_session_data_print Serializes the current SSL session data to stdout or file

For server side help, type 'help contents'


SQL语句查看帮助:
mysql> help select ...
mysql> help create ...

4 数据库基本操作


mysql> show databases;   库信息默认在/var/lib/mysql目录下的
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)



DDL(数据定义语言)语句:

CREATE DATABASE:用于创建数据库。
示例:CREATE DATABASE mydatabase name;

DROP DATABASE:用于删除数据库。
示例:DROP DATABASE mydatabase name;

SHOW DATABASES:查看数据库

CREATE TABLE:用于创建表。
示例:CREATE TABLE mytable (id INT, name VARCHAR(50));

ALTER TABLE:用于修改表的结构。
示例:ALTER TABLE mytable ADD COLUMN age INT;

DROP TABLE:用于删除表。
示例:DROP TABLE mytable;

TRUNCATE TABLE:用于清空表的数据。
示例:TRUNCATE TABLE mytable;

CREATE INDEX:用于创建索引。
示例:CREATE INDEX idx_name ON mytable (name);

DROP INDEX:用于删除索引。
示例:DROP INDEX idx_name ON mytable;


语法:CREATE DATABASE db_name;
数据库命名规则:区分大小写,唯一性,不能使用关键字,如create select,不能单独使用数字
mysql> create database db1;
Query OK, 1 row affected (0.00 sec)



查看帮助:
mysql> help create


查看数据库:SHOW DATABASES;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db1                |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)


选择数据库:USE db_name;
mysql> use db1;
Database changed


查看当前所在数据库:SELECT database();
mysql> select database();
+------------+
| database() |
+------------+
| db1        |
+------------+
1 row in set (0.00 sec)


删除数据库:DORP DATABASE db_name;
mysql> drop database db1;
Query OK, 0 rows affected (0.01 sec

mysql> drop database IF EXISTS db1;
Query OK, 0 rows affected, 1 warning (0.00 sec)



查看帮助:
mysql> help drop

mysql> help drop database

      

5 MySQL数据类型

在 MySQL数据库管理系统中,可以通过存储引擎来决定表的类型,同时,MySQL数据库管理系统也提供了数据类型决定存储数据的类型,MySQL数据库管理系统提供的数据类型:

数值类型:
    整数类型:TINYINT  SMALLINT  MEDIUMINT  INT(*) BIGINT
    浮点数类型:FLOAT DOUBLE
    定点数类型:DEC
    位类型:BIT
字符串类型:
    CHAR系列:CHAR(定长) VARCHAR(变长*)
    TEXT系列:TINYTEXT  TEXT(*)  MEDIUTEXT LONGTEXT
    BLOB系列:TINYBLOB  BLOB  MEDIUMBLOB  LONGBLOB
    BINARY系列: BINARY VARBINARY
    枚举类型: ENUM
    集合类型:SET
    
时间和日期类型: DATE TIME  DATETIME  TIMESTAMP  YEAR
5.1数据类型示例:
整数类型示例:
LAB1:
mysql> create table db1(
    -> name tinyint,
    -> age int
    -> );
Query OK, 0 rows affected (0.03 sec)

查看表结构:
mysql> desc db1;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| name  | tinyint | YES  |     | NULL    |       |
| age   | int     | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

# 向db1数据表插入数据,注意字符串类型必须要使用引号,数值类型则不用
mysql> insert into db1 values (111,111);
Query OK, 1 row affected (0.00 sec)

#查看表信息
mysql> select * from db1;
+------+------+
| name | age  |
+------+------+
|  111 |  111 |
+------+------+
1 row in set (0.00 sec)


LAB1:# 整形数据默认有符号,超过存储范围出错
# name字段类型为最小值tinyint类型,所以超出之后会报错;
mysql> insert into db1(name) values(127);
Query OK, 1 row affected (0.01 sec)

mysql> insert into db1(name) values(128);
ERROR 1264 (22003): Out of range value for column 'name' at row 1

# age字段int类型:
mysql> insert into db1(age) values(2147483647);
Query OK, 1 row affected (0.00 sec)

mysql> insert into db1(age) values(2147483648);
ERROR 1264 (22003): Out of range value for column 'age' at row 1




LAB2:#默认无符号:unsigned
mysql> create table db2(
    -> name tinyint unsigned,
    -> age int unsigned
    -> );
Query OK, 0 rows affected (0.02 sec)


mysql> insert into db2(name) values(128);
Query OK, 1 row affected (0.01 sec)

mysql> insert into db2(name) values(255);
Query O
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值