问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sql语句笔记

发布网友 发布时间:2022-04-27 00:23

我来回答

2个回答

懂视网 时间:2022-04-30 02:19

 

MySQL中定义数据字段的类型对你数据库的优化是非常重要的。

MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

数值类型:
tinyint smallint mediumint int bigint float double

decimal(size,d) numeric(size,d) 等价
"size" 规定数字的最大位数。"d" 规定小数点右侧的最大位数。


日期和时间类型:

date YYYY-MM-DD
time HH:MM:SS
year YYYY
datetime YYYY-MM-DD HH:MM:SS
timestamp YYYYMMDD HHMMSS TIMESTAMP类型有专有的自动更新特性

字符串类型:
CHAR 0-255字节 定长字符串
VARCHAR 0-65535 字节 变长字符串
TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
TINYTEXT 0-255字节 短文本字符串
BLOB 0-65 535字节 二进制形式的长文本数据
TEXT 0-65 535字节 长文本数据
MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
LOGNGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295字节 极大文本数据

------------------------------------------------------------------------------------

创建MySQL数据表需要以下信息:

表名
表字段名
定义每个表字段

国家标准GB2312: 一个汉字=2个字节
UTF-8:一个汉字=3个字节(一般)
首先要确定mysql版本
4.0版本以下,varchar(50),指的是50字节,如果存放UTF8汉字时,只能存16个(每个汉字3字节)
5.0版本以上,varchar(50),指的是50字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以
存放50个

create table nangua(nangua_id INT NOT NULL AUTO_INCREMENT,
nangua_title VARCHAR(200),
nangua_author VARCHAR(30),
nangua_date DATE,
PRIMARY KEY(NANGUA_ID));

不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。

 

PHP方式创建:

header("content-type:text/html;charset=utf-8");
$con=mysql_connect(‘localhost‘,‘root‘,123);
if(!$con){
die(‘不能连接到数据库‘.mysql_error());
}
echo ‘成功连接数据‘.‘<br/>‘;
$sql="create table qiezi(".
"nangua_id INT NOT NULL AUTO_INCREMENT,".
"nangua_title VARCHAR(200),".
"nangua_author VARCHAR(30),".
"nangua_date DATE,".
"PRIMARY KEY(nangua_id)".
")";
mysql_select_db(‘managerie‘);
$newtable=mysql_query($sql,$con);
if(!$newtable){
die(‘不能创建表‘.mysql_error());
}
echo ‘成功创建表!‘.‘<br/>‘;
mysql_close($con);

------------------------------------------------------------------------------------
删除表:
header("content-type:text/html;charset=utf-8");
$con=mysql_connect(‘localhost‘,‘root‘,123);
if(!$con){
die(‘不能连接到数据库‘.mysql_error());
}
echo ‘成功连接数据‘.‘<br/>‘;
mysql_select_db(‘managerie‘);
$sql=‘DROP TABLE qiezi‘;
$drop=mysql_query($sql,$con);
if(!$drop){
die(‘未删除成功‘.mysql_error());
}
echo ‘删除成功!‘;
mysql_close($con);

------------------------------------------------------------------------------------

插入数据:
<?php

header(‘content-type:text/html;charset=utf-8‘);
if(isset($_POST[‘sub‘])){

$con=mysql_connect(‘localhost‘,‘root‘,‘123‘);
if(!$con){

die(‘连接不成功!‘.mysql_error());
}

echo ‘链接成功!‘;

if(! get_magic_quotes_gpc()){

$nangua_title=addslashes($_POST[‘nangua_title‘]);
$nangua_author=addslashes($_POST[‘nangua_author‘]);
$nangua_date=addslashes($_POST[‘nangua_date‘]);

}else{

$nangua_title=$_POST[‘nangua_title‘];
$nangua_author=$_POST[‘nangua_author‘];
$nangua_date=$_POST[‘nangua_date‘];

}


$sql="create table kk4(".
"nangua_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT ,".
"nangua_title VARCHAR(200),".
"nangua_author VARCHAR(100),".
"nangua_date DATE,".
"PRIMARY KEY(nangua_id)".
")";


mysql_select_db(‘managerie‘);


if(mysql_num_rows(mysql_query("SHOW TABLES LIKE ‘kk4‘"))==0){

$newtable=mysql_query($sql,$con);

if(!$newtable){

die(‘创建表不成功‘.mysql_error().‘<br/>‘);

}

echo ‘创建表成功‘.‘<br/>‘;


}

$insert_sql="INSERT INTO kk4(".
"nangua_title,nangua_author,nangua_date)".
"VALUES".
"(‘$nangua_title‘,‘$nangua_author‘,‘$nangua_date‘)";


$write=mysql_query($insert_sql,$con);
if(!$write){
die(‘写入数据不成功‘.mysql_error().‘<br/>‘);
}
echo ‘写入数据成功!‘;
mysql_close($con);

}
else{
?>

 

<form method="post" action="<?php $_PHP_SELF ?>">
<table width="600" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="250">Tutorial Title</td>
<td>
<input name="nangua_title" type="text" id="nangua_title">
</td>
</tr>
<tr>
<td width="250">Tutorial Author</td>
<td>
<input name="nangua_author" type="text" id="nangua_author">
</td>
</tr>
<tr>
<td width="250">Submission Date [ yyyy-mm-dd ]</td>
<td>
<input name="nangua_date" type="text" id="nangua_date">
</td>
</tr>
<tr>
<td width="250"> </td>
<td> </td>
</tr>
<tr>
<td width="250"> </td>
<td>
<input name="sub" type="submit" id="sub" value="">
</td>
</tr>
</table>
</form>
<?php
}
?>

------------------------------------------------------------------------------------
SELECT 查询数据:

SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N]

查询语句中可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
SELECT 命令可以读取一条或者多条记录。
可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
可以使用 WHERE 语句来包含任何条件。
可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
可以使用 LIMIT 属性来设定返回的记录数。

header(‘content-type:text/html;charset=utf-8‘);


$con=mysql_connect(‘localhost‘,‘root‘,‘123‘);
if(!$con){

die(‘连接不成功!‘.mysql_error());
}

echo ‘链接成功!‘;

$sql="SELECT nangua_title,nangua_author,nangua_date FROM kk4";

mysql_select_db(‘managerie‘);

$return_result=mysql_query($sql,$con);

if(!$return_result){

die(‘查询不到数据‘.mysql_error());

}

while($row=mysql_fetch_array($return_result,MYSQL_ASSOC)){

echo "标题是:{$row[‘nangua_title‘]}<br/>".
"作者是:".$row[‘nangua_author‘].‘<br/>‘.
"发表时间是:{$row[‘nangua_date‘]}<br/>";

}
mysql_free_result($con);
echo ‘遍历完成!‘;
mysql_close($con);


在我们执行完SELECT语句后,释放游标内存是一个很好的习惯。 。可以通过PHP函数mysql_free_result()来实现
内存的释放。

------------------------------------------------------------------------------------
UPDATE 更新修改数据:

需要修改或更新MySQL中的数据,我们可以使用 SQL UPDATE 命令来操作
$sql="UPDATE kk4 SET nangua_title=11111111111 WHERE nangua_id =122";

mysql_select_db(‘managerie‘);

$return_result=mysql_query($sql,$con);

------------------------------------------------------------------------------------

DELETE删除:

$sql="DELETE FROM kk4 WHERE nangua_title=11111111111";

------------------------------------------------------------------------------------

LIKE子句:
LIKE 子句中使用百分号(%)字符来表示任意字符,类似于UNIX或正则表达式中的星号 (*)
如果没有使用百分号(%), LIKE 子句与等号(=)的效果是一样的。
$sql=‘SELECT nangua_id FROM kk4 WHERE nangua_author LIKE "4%" ‘;

mysql_select_db(‘managerie‘);

$return_result=mysql_query($sql,$con);

while($xx=mysql_fetch_assoc($return_result)){

echo "{$xx[‘nangua_id‘]}";

}
------------------------------------------------------------------------------------

ORDER BY 排序子句
SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]]

$sql=‘SELECT nangua_date FROM kk4 ORDER BY nangua_id DESC‘;

mysql_select_db(‘managerie‘);

$return_result=mysql_query($sql,$con);

while($xx=mysql_fetch_array($return_result,MYSQL_ASSOC)){

echo "{$xx[‘nangua_date‘]}<br/>";

}

------------------------------------------------------------------------------------

select VERSION(); 查看mysql版本信息

如需从列中仅选取唯一不同的值,需要使用 SELECT DISTINCT 语句:

select current_date(); 查看当前日期 select curdate();

select 5*2; 计算

select now(); 查看当前时间

c 取消

quit 退出 q 退出

select user(); 查看当前用户

LOAD DATA LOCAL INFILE ‘/path/pet.txt‘ INTO TABLE pet; 载入文本文件到数据库
LINES TERMINATED BY ‘ ‘;

YEAR() 截取年份

right(curdate(),5)回最右边的len个字符的字符串

drop 删除表 删除数据库 drop table if exists kk4; drop database kk4;

alter 修改表结构 删除 增加列

alter table test rename test1; //修改表名

ALTER TABLE table_name ADD column_name datatype //增加列

ALTER TABLE table_name DROP COLUMN column_name //删除列

ALTER TABLE `TableName` MODIFY COLUMN `FieldName` VARCHAR(14) //修改列属性

alter table pp modify id int default 1; 修改列属性
alter table pp change id newid int; 修改列名

SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值不要使用引号。

TOP 子句
TOP 子句用于规定要返回的记录的数目。
对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。

select * from name limit 4;
select * from name order by id desc limit 2;
要先order by再limit

"%" 可用于定义通配符(模式中缺少的字母)一个或者多个
select * from name where firstname like ‘%7‘;

不包含:not like

select * from name where firstname not like ‘%7%‘;

% 替代一个或多个字符
_ 仅替代一个字符


IN 操作符允许我们在 WHERE 子句中规定多个值。
select * from name where firstname in (‘bb8‘,‘bb6‘);

操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
注意 不同的数据库对 BETWEEN...AND 操作符的处理方式是有差异的。
select * from name where newid between 2 and 7; mysql是包含2和7的

别名 alias AS或者省略 一般多表查询的时候加个别名比较方便一点
select * from name as n where n.firstname=‘bb3‘;
select * from name n where n.firstname=‘bb3‘;
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p, Product_Orders AS po
WHERE p.LastName=‘Adams‘ AND p.FirstName=‘John‘

JOIN==inner join: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行 mysql不支持

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中
的列的顺序必须相同。

select into mysql不支持

约束用于限制加入表的数据的类型
NOT NULL
UNIQUE 约束 唯一的 unique和primary key 区别是一个表中主键只能有一个
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT


CREATE TABLE Persons
(
Id_P int NOT NULL UNIQUE, 设置约束
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)


删除约束
alter table nangua drop index name ;


当表已被创建时,如需在 "Id_P" 列创建 UNIQUE 约束:
alter table nangua add unique(Id_P)

命名unique 约束
ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)

foreign key 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)

CHECK 约束用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (Id_P>0 AND City=‘Sandnes‘)
)

ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City=‘Sandnes‘)

ALTER TABLE Persons
DROP CHECK chk_Person

alter table users AUTO_INCREMENT=10000; 修改起始值

default 设置默认值
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT ‘Sandnes‘
)

ALTER TABLE Persons
ALTER City SET DEFAULT ‘SANDNES‘


CREATE INDEX 语句用于在表中创建索引。
更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的
做法是仅仅在常常被搜索的列(以及表)上面创建索引。

CREATE INDEX PersonIndex
ON Person (LastName)

CREATE INDEX PersonIndex
ON Person (LastName DESC)

通过使用 DROP 语句,可以轻松地删除索引、表和数据库。
ALTER TABLE table_name DROP INDEX index_name

 

SQL Date 函数:

NOW() 函数返回当前的日期和时间。
alter table wokao add orderdate datetime not null default now();
insert into wokao (name,age2)values(‘z‘,20);

CURDATE() 函数返回当前的日期。
select curdate();

CURTIME() 函数返回当前的时间。

DATE() 函数返回日期或日期/时间表达式的日期部分。
date(curtime()) 提取日期部分

EXTRACT() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
EXTRACT(unit FROM date) date 参数是合法的日期表达式。
SELECT EXTRACT(YEAR FROM OrderDate) AS OrderYear,
EXTRACT(MONTH FROM OrderDate) AS OrderMonth,
EXTRACT(DAY FROM OrderDate) AS OrderDay
FROM Orders
WHERE OrderId=1

select extract(year from orderdate) from wokao;


DATE_ADD() 函数向日期添加指定的时间间隔。
select date_add(orderdate,interval 2 week) from wokao where id=102;

DATE_SUB() 从日期减去指定的时间间隔
select date_sub(orderdate,interval 2 week) from wokao where id=102;

DATEDIFF() 返回两个日期之间的天数
DATEDIFF(date1,date2)

SQL函数:
select avg(nihao) from wokao; 求平均数

count COUNT() 函数返回匹配指定条件的行数。
select count(nihao) from wokao where nihao=12;
select count(distinct nihao) from wokao; 去掉重复的


FIRST() 函数
FIRST() 函数返回指定的字段中第一个记录的值。
提示:可使用 ORDER BY 语句对记录进行排序。
//mysql 没有first函数


MAX() 函数
MAX 函数返回一列中的最大值。NULL 值不包括在计算中。
select max(nihao) from wokao;

SUM() 函数
SUM 函数返回数值列的总数(总额)。

GROUP BY 语句 分类汇总。
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
select name,sum(nihao) from wokao group by nihao;
select name,sum(nihao) from wokao group by nihao order by nihao desc


having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和
having字句前。而 having子句在聚合后对组记录进行筛选。

select name,sum(nihao) from wokao group by name having sum(nihao)<20;
select name,sum(nihao) from wokao where name=‘nn‘ group by name having sum(nihao)<20;


UCASE() 函数
UCASE 函数把字段的值转换为大写。
SELECT UCASE(column_name) FROM table_name


LCASE() 函数
LCASE 函数把字段的值转换为小写。


MID() 函数
MID 函数用于从文本字段中提取字符。
SELECT MID(column_name,start[,length]) FROM table_name
column_name 必需。要提取字符的字段。
start 必需。规定开始位置(起始值是 1)。
length 可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。
select mid(nihao,1,1) from wokao;

ROUND() 函数
ROUND 函数用于把数值字段舍入为指定的小数位数。
SELECT ROUND(column_name,decimals) FROM table_name

select round(ff,2) from wokao;

sql基础笔记备忘

标签:

热心网友 时间:2022-04-29 23:27

CSDN论坛上多去看看别人空间里,这样的文章很多
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机玻璃硬度是多少合适 ips屏幕硬度怎么样 手机硬度是什么意思? 2024年拼多多春节发货时间规定是什么?过年还要48小时发货吗? e元素e8100无线鼠标怎么使用 E元素X-8100靠谱吗?可以用几年? E元素X-8100现在有几种配色,哪一种配色好呢? E元素X-8100用的是什么色的轴,适合玩游戏吗? 浙c是哪个城市 浙c是哪里 榻榻米软包怎么安装 长跑该怎么去训练才会有效 长跑要怎样才跑得快啊? 在长跑比赛时,怎样跑长跑才正确?才能得第一? 跑长跑怎么样才能跑得更快 长跑怎么坚持才能坚持到最后? 长跑怎么才能跟上? 一般买新车分期付款手续费多少钱 怎样才能提高长跑速度? 怎么跑长跑才好 怎样才能练好长跑 怎样才能跑好长跑? 如何查看自己支付宝实名的账号 我已修改过QQ里的实名认证,怎么再能修改一次? 怎么查看自己实名支付宝的账单 车险 车损险 保额 车险。为什么有的保险公司认定的车价要高一些,有的认定的价格要低一些?应该选哪种呢 保费相同的车险保额高好还是低好 车险的第三者责任险的保额是根据什么来定的?是车价么?..、 车险的三高和三低是什么? 汽车保险中的保额基数是什么意思啊 《SQL入门经典第5版》pdf下载在线阅读全文,求百度网盘云资源_百度知 ... 一个SQL菜鸟,想学习前辈的经典一点的SQL语句,高分回报!50+50_百度... 在手机百度上怎么签到 SQL Server 2008学习笔记:...求答案 plsql学习笔记4 SQL语言好学吗 sql 中的 int (5) 是什么意思?详细点 百度活动中的″签到领现金&quot;,现金去哪儿领? 云笔记里的分享笔记sql怎么写 请问谁知道SQL语句有哪些、数据库表及索引具体是什么? 怎么签到领取流量 易锦教育易语言培训地址? sql server NUMERIC(5 )什么意思? 签到如何领取流量 150分!高分悬赏 求oracle定时任务创建语句 跪求知道 执行存储过程_百度... 百度在哪里签到啊? 姓“易”,怎样取名字 怎么签到领流量?联通手机 conn.createStatement 这个东西不太明白,求解答 百度APP签到活动怎么领钱?