SQL学习
MySQL
登录:mysql -u root -p:
数据库相关
创建数据库: create database db charset utf8;
查看数据库:show databases;
查看某一个数据库:show database like 'db';
查看某一种数据库:show database like 'd';
删除数据库: DROP DATABASE my_db1;
表相关
创建表:create table student(student_id int, name varchar(20) );
create table teacher(id int primary key auto_increment,t_name varchar(20),c_name varchar(128));
查看表:show tables;
查看表的描述:desc(describe) student(student为某一个表名);
show columns
查看建表的语句:show create table schedule; (schedule为某一个表名);
删除表:drop student;
修改表名:rename table student to xuesheng;
修改多个表名:rename table xuesheng to student, xuesheng2 to student2;
修改到另一个表里面并修改名字:rename table xuesheng to class.xuesheng, xuesheng2 to class.xuesheng2;
添加表元素:alter table student add tizhong int;
修改表元素名:alter table student modify name varchar(40);
注:xuesheng
表的增、删、改、查
首先先创建一个表teacher
create table teacher(id int primary key auto_increment,t_name varchar(20),c_name varchar(128));
插入:
insert into 表名 (列1,列2) values(值1,值2);
查询:
select * from teacher;
正如所见,SELECT返回所有匹配的行。但是,如果你不想要每个值 每次都出现,怎么办?例如,假如你想得出products表中产品的所有供 应商ID:
输入: show vend_id from products;
输出:
vend_id |
---|
1001 |
1001 |
1001 |
1002 |
1002 |
1002 |
1003 |
1003 |
1003 |
SELECT语句返回9行(即使表中只有3个供应商),因为products表 中列出了9个产品。那么,如何检索出有不同值的列表呢?
解决办法是使用DISTINCT关键字,顾名思义,此关键字指示MySQL 只返回不同的值。
select distinct vend_id from products;
不能部分使用DISTINCT DISTINCT关键字应用于所有列而 不仅是前置它的列。如果给出SELECT DISTINCT vend_id, prod_price,除非指定的两个列都不同,否则所有行都将被 检索出来。
改:
update 表名 set 列名称 = 新值 where id = 1;
删:
DELETE FROM 表名称 WHERE 列名称 = 值