MYSQL-数据库及数据表基本操作

1.数据库操作

创建数据库

CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name

如 CREATE DATABASE t1

[IF NOT EXISTS]:如果库已经存在,就不会返回错误

显示数据库编码方式

SHOW CREATE DATABASE t1

指定编码方式

CREATE DATABASE IF NOT EXIST t2 CHARACTER SET=gbk

修改数据库

ALTER {DATABASE|SCHEMA} db_name

如ALTER DATABASE t2 CHARACTER SET=utf8

查看当前服务器下的数据库列表

SHOW {DATABASE|SCHEMAS}

如 SHOW DATABASES

查看当前打开的数据库

SELECT DATABASE();

删除数据库

DROP {DATABASE|SCHEMA} [IF EXISTS] db_name

2.数据表

USE 数据库名称

创建数据表

CREATE TABLE [IF NOT EXISTS] table_name (column_name data_type,…)

如:

CREATE TABLE tb1(

username VARCHAR(20),

age TINYINT UNSIGNED,

salary FLOAT(8,2) UNSIGNED

);

查看数据库列表

SHOW TABLES [FROM db_name]

查看数据表结构

SHOW COLUMNS FROM tb_name

插入记录

INSERT [INTO] tb_name [(col_name,…)] VALUES(val,…)

如:

INSERT tb1 VALUES(‘Tom‘,25,7863.25);//必须匹配

INSERT tb1 (username,salary) VALUES(‘Tom‘,7863.25);

记录查找

SELECT expr,… FROM tb_name

如:

SELECT *FROM tb1;//*为字段过滤

空值NULL与非空NOT NULL

如:

CREATE TABLE tb2(

username VARCHAR(20) NOT NULL,

age TINYINT UNSIGNED NULL

);

自动编号

AUTO_INCREMENT:必须与主键组合使用,默认情况下,起始值为1,每次增量为1

主键

PRIMARY KEY:自动为NOT NULL 不一定和AUTO_INCREMENT一起使用 值唯一不许重复

CREATE TABLE tb3(

id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

username VARCHAR(20) NOT NULL

);

CREATE TABLE tb4(

id SMALLINT UNSIGNED PRIMARY KEY,

username VARCHAR(20) NOT NULL

);

唯一约束

UNIQUE KEY:可以保证记录的唯一性,字段可以为NULL。每张数据表可以存在多个唯一约束

CREATE TABLE tb5(

id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

username VARCHAR(20) NOT NULL UNIQUE KEY,

age TINYINT UNSIGNED

);

默认约束

DEFAULT:插入记录时如果没有明确为其赋值,则自动赋予默认值

CREATE TABLE tb5(

id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

username VARCHAR(20) NOT NULL UNIQUE KEY,

sex ENUM(‘1‘,‘2‘,‘3‘) DEFAULT ‘3‘

);

外键约束

FOREIGN KEY p:保持数据一致性和完整性,实现一对一或一对多关系

要求:

注:子表是具有外键列的表,子表参照的表叫父表

编辑数据表的默认存储引擎(配置)

default-set-engine=INNODB

CREATE TABLE provinces( //父表

id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

pname VARCHAR(20) NOT NULL

);

CREATE TABLE users( //子带

id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

username VARCHAR(20) NOT NULL,

pid SMALLINT UNSIGNED,//注意数据类型必须一致

FOREIGN KEY(pid) REFERENCES provinces (id)

);

如:

  • FOREIGN KEY (pid) PREFERENCES provinces (id) ON DELETE CASCADE,

INSERT provinces(pname) VALUES(‘A‘);

INSERT provinces(pname) VALUES(‘B‘);

INSERT provinces(pname) VALUES(‘C‘);

INSERT users1(username,pid) VALUES(‘Tom‘,1);

INSERT users1(username,pid) VALUES(‘Jerry‘,2);

INSERT users1(username,pid) VALUES(‘Lucy‘,3);

当删除provinces中的id=3的数据C时,相应的users1中的Lucy也会被删掉,更新的话同样如此;

实际开发中,我们很少使用物理的外键约束,而是使用逻辑约束;物理的外键约束只有innoDB这种存储引擎才会支持,MYISAM这种引擎就不支持物理的外键约束。反过来说,当我们使用到的引擎为MYISAM时,只能使用逻辑外键(即两个表的设计的逻辑关系)。

在实际开发中,用列级约束比较多,表级约束很少用,除此之外,在所有的约束中,并不是说每种约束都存在着表级或列级约束,其中,NOT NULL 非空约束,DEFAULT约束这两种约束就不存在表级约束,它们只有列级约束,而对于其他的三种,像主键,唯一,外键,它们都可以存在表级和列级约束。

3.修改数据表

添加单列

ALTER TABLE tb_name ADD [column] col_name column_definition [FIRST|AFTER col_name];

添加多列

ALTER TABLE tb_name ADD (col_name data_type ,...);

删除单列

ALTER TABLE tb_name DROP col_name;

删除多列

ALTER TABLE tb_name DROP col_name,DROP ....;

复合增减列

ALTER TABLE tb_name ADD col_name data_type [FIRST|AFTER col_name],DROP col_name;

ALTER TABLE tb_name ADD (col_name data_type ,...),DROP col_name,DROP ...;

添加主键约束

ALTER TABLE tb_name ADD [CONSTRAINT [symbol]] PRIMARY KEY(index_col_name);

添加唯一约束

ALTER TABLE tb_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY](index_col_name,...);

添加外键约束

ALTER TABLE tb_name ADD [CONSTRAINT [symbol]] FOREIGN KEY(index_col_name,...) REFERENCES db_name(col_name);

添加或删除默认约束

ALTER TABLE tb_name ADD col_name {SET DEFAULT literal | DROP DEFAULT};

删除主键约束

ALTER TABLE tb_name DROP PRIMARY KEY;

删除唯一约束

ALTER TABLE tb_name DROP {INDEX | KEY} index;;//用命令SHOW INDEXES FROM tb_name (表名称)\G;查看唯一约束的列名称。另外这里的index也可以用来直接删除索引

删除外键约束

ALTER TABLE tb_name DROP FOREIGN KEY fk_name;//用SHOW CREATE TABLE users2;查看外键约束的名称,由CONSTRAINT [symbol]定义

修改列定义

ALTER TABLE tb_name MODIFY id SMALLINT UNSIGNED NOT NULL FIRST;//修改id字段的数据类型和在表users2中所处的位置

修改列名称

ALTER TABLE tb_name CHANGE pid(旧的字段名称) p_id(新的字段名称) TINYINT UNSIGNED NOT NULL;//修改pid字段,改为p_id字段

数据表更名

ALTER TABLE tb_name1 RENAME tb_name2;//把表名users2改为新的users3

时间: 2024-12-16 08:36:24

MYSQL-数据库及数据表基本操作的相关文章

Python数据库操作 MySQL数据库与数据表操作#学习猿地

# MySQL数据库与数据表操作 + 数据库的操作 + 数据库创建 + 数据库删除 + 数据表的操作 + 数据表的创建 + 数据表的修改 (表结构) + 数据表的删除 ### 数据库的操作 #### 1.数据库的创建 ```mysql # 链接mysql数据库后,进入mysql后可以操作数据 # 1. 创建库 create database if not exists tlxy default charset=utf8: -- 1. 数据库 tlxy 如果不存在则创建数据库,存在则不创建 --

mysql数据库、数据表、数据基本操作

1 连接数据库 mysql -h 主机地址 -u用户名 -p 密码 2 查看数据库 show databases; 3 查看版本号 select version(); 4 查看当前数据库 select database(); 5 查看现有的数据表 show tables; 6 查看数据表结构 desc 表名; 7 查看数据表创建语句 show create table table_name; 8 查询数据 select * from 表名; 9 查看数据表的前三条数据 select * from

mysql数据库和数据表的操作

1. cmd连接数据库 mysql -hlocalhost -uroot -p123 // mysql -uroot (因为我是本地,并且没有设置密码) 2. 重命名数据表和移动数据表 mysql里面有:数据库samp_db,其下有数据表students,teachers. 现在我要把表移动到school_db下面去,具体操作: 注意:重命名数据库的命令被去除了,rename database 命令被去除了.理由是丢失数据. // 具体原因官网有,但是不能理解 新建数据库:school_db;

php创建mysql数据库以及数据表

用php链接到mysqli,成功后利用,mysqli_query()创建数据库以及数据表. <php $con = mysqli_connect("localhost","root","root"); if(!$con) { die("没有连接成功".mysqli_error()); }; if(!mysqli_query($con,"create database jiangxia ")) { di

MySQL 数据库、数据表、数据的基本操作

1.数据库(database)管理 1.1 create 创建数据库 create database firstDB; 1.2 show 查看所有数据库 mysql> show databases; +--------------------+| Database           |+--------------------+| information_schema || firstDB            || mysql              || performance_sche

MySQL系列:数据表基本操作

1. 指定数据库 mysql> use portal; 2. 数据库表基本操作 2.1 查看数据表 mysql> show tables;

mysql数据库和数据表的简单操作

一.数据库的增删改查 1.新建数据库 CREATE DATABASE 数据库名 charset utf8; 数据库名规则:可以由字母.数字.下划线.@.#.$ 区分大小写, 不能使用关键字如 create select, 不能单独使用数字, 最长128位 2.查看数据库 show databases; show create database 数据库名; 3.选择数据库 USE 数据库名; 4.删除数据库 DROP DATABASE 数据库名; 5.修改数据库字符编码 alter databas

MySql 数据库、数据表操作

数据库操作 创建数据库 语法 语法一:create database 数据库名 语法二:create database 数据库名 character set 字符集; 查看数据库 语法 查看数据库服务器中的所有的数据库:show databases; 查看某个数据库的定义的信息:show create database 数据库名; 删除数据库 语法(慎用) drop database 数据库名称; 其他数据库操作命令 语法 切换数据库:use 数据库名; 查看正在使用的数据库:select da

mysql数据库delete数据时不支持表别名

今天在帮同事查看一条删除的SQL语句执行出错的问题 SQL语句如下: 1 DELETE FROM LEAD_SYSTEM_MENU_ORG_REF as t WHERE t.resourceid='4028812348f28b890148f29253a80000' 这条SQL语句放到Oracle数据库中去执行是可以正常执行的,但是放到MySQL数据库中执行时就出现了如下的错误: 1 [Err] 1064 - You have an error in your SQL syntax; check

【mysql元数据库】使用information_schema.tables查询数据库和数据表信息

概述 对于mysql和Infobright等数据库,information_schema数据库中的表都是只读的,不能进行更新.删除和插入等操作,也不能加触发器,因为它们实际只是一个视图,不是基本表,没有关联的文件. information_schema.tables存储了数据表的元数据信息,下面对常用的字段进行介绍: table_schema: 记录数据库名: table_name: 记录数据表名: engine : 存储引擎: table_rows: 关于表的粗略行估计: data_lengt